Esempio n. 1
0
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;
}