void _Scheduler_priority_affinity_SMP_Node_initialize( const Scheduler_Control *scheduler, Thread_Control *the_thread ) { Scheduler_priority_affinity_SMP_Node *node = _Scheduler_priority_affinity_Node_get( the_thread ); _Scheduler_SMP_Node_initialize( &node->Base.Base ); node->Affinity = *_CPU_set_Default(); node->Affinity.set = &node->Affinity.preallocated; }
/* * This method initializes the scheduler control information for * this scheduler instance. */ void _Scheduler_priority_affinity_SMP_Node_initialize( const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority ) { Scheduler_priority_affinity_SMP_Node *the_node; _Scheduler_priority_SMP_Node_initialize( scheduler, node, the_thread, priority ); /* * All we add is affinity information to the basic SMP node. */ the_node = _Scheduler_priority_affinity_SMP_Node_downcast( node ); the_node->Affinity = *_CPU_set_Default(); the_node->Affinity.set = &the_node->Affinity.preallocated; }
bool _Scheduler_default_Get_affinity( Scheduler_Control *scheduler, Thread_Control *thread, size_t cpusetsize, cpu_set_t *cpuset ) { const CPU_set_Control *ctl; (void) scheduler; (void) thread; ctl = _CPU_set_Default(); if ( cpusetsize != ctl->setsize ) { return false; } CPU_COPY( cpuset, ctl->set ); return true; }