29 pinned_node = SCHEDULER_NODE_OF_THREAD_SCHEDULER_NODE(
35 scheduler = pinned_scheduler;
52 if ( home_node != pinned_node ) {
60 scheduler = home_scheduler;
static __inline__ Chain_Node * _Chain_First(const Chain_Control *the_chain)
Returns pointer to chain's first node.
static __inline__ void _Scheduler_Acquire_critical(const Scheduler_Control *scheduler, ISR_lock_Context *lock_context)
Acquires the scheduler instance inside a critical section (interrupts disabled).
static __inline__ const Scheduler_Control * _Thread_Scheduler_get_home(const Thread_Control *the_thread)
Gets the home scheduler of the thread.
void(* block)(const Scheduler_Control *, Thread_Control *, Scheduler_Node *)
Inlined Routines Associated with the Manipulation of the Scheduler.
void _Thread_Do_unpin(Thread_Control *executing, Per_CPU_Control *cpu_self)
Unpins the thread.
Thread_Scheduler_control Scheduler
Scheduler related control.
static __inline__ void _Thread_State_release(Thread_Control *the_thread, ISR_lock_Context *lock_context)
Releases the lock context and enables interrupts.
struct Scheduler_Node::@19 Thread
Block to register and manage this scheduler node in the thread control block of the owner of this sch...
static __inline__ void _Scheduler_Release_critical(const Scheduler_Control *scheduler, ISR_lock_Context *lock_context)
Releases the scheduler instance inside a critical section (interrupts disabled).
static __inline__ void _Chain_Prepend_unprotected(Chain_Control *the_chain, Chain_Node *the_node)
Prepends a node (unprotected).
int pin_level
The thread pinning to current processor level.
static __inline__ Scheduler_Node * _Thread_Scheduler_get_home_node(const Thread_Control *the_thread)
Gets the scheduler's home node.
void(* unpin)(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node, struct Per_CPU_Control *cpu)
Unpin thread operation.
static __inline__ void _Chain_Extract_unprotected(Chain_Node *the_node)
Extracts this node (unprotected).
void(* unblock)(const Scheduler_Control *, Thread_Control *, Scheduler_Node *)
const struct _Scheduler_Control * pinned_scheduler
The pinned scheduler of this thread.
Chain_Control Scheduler_nodes
Scheduler nodes immediately available to the schedulers for this thread.
static __inline__ const Scheduler_Control * _Scheduler_Node_get_scheduler(const Scheduler_Node *node)
Gets the scheduler of the node.
Scheduler_Operations Operations
The scheduler operations.
Scheduler node for per-thread data.
Local ISR lock context for acquire and release pairs.
static __inline__ bool _Thread_Is_ready(const Thread_Control *the_thread)
Checks if the thread is ready.
static __inline__ void _Thread_State_acquire(Thread_Control *the_thread, ISR_lock_Context *lock_context)
Disables interrupts and acquires the lock_context.
union Scheduler_Node::@19::@22 Scheduler_node
Node to add this scheduler node to Thread_Control::Scheduler::Scheduler_nodes or a temporary remove l...