Ignore:
Timestamp:
04/09/14 13:07:54 (9 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, 5, master
Children:
509040f0
Parents:
27270b0d
git-author:
Sebastian Huber <sebastian.huber@…> (04/09/14 13:07:54)
git-committer:
Sebastian Huber <sebastian.huber@…> (04/15/14 08:41:44)
Message:

score: Add clustered/partitioned scheduling

Clustered/partitioned scheduling helps to control the worst-case
latencies in the system. The goal is to reduce the amount of shared
state in the system and thus prevention of lock contention. Modern
multi-processor systems tend to have several layers of data and
instruction caches. With clustered/partitioned scheduling it is
possible to honour the cache topology of a system and thus avoid
expensive cache synchronization traffic.

We have clustered scheduling in case the set of processors of a system
is partitioned into non-empty pairwise-disjoint subsets. These subsets
are called clusters. Clusters with a cardinality of one are partitions.
Each cluster is owned by exactly one scheduler instance.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpukit/score/src/threadcreateidle.c

    r27270b0d rc5831a3f  
    2020
    2121#include <rtems/score/threadimpl.h>
     22#include <rtems/score/schedulerimpl.h>
    2223#include <rtems/score/stackimpl.h>
    2324#include <rtems/config.h>
     
    4041    &_Thread_Internal_information,
    4142    idle,
     43    _Scheduler_Get_by_CPU( per_cpu ),
    4244    NULL,        /* allocate the stack */
    4345    _Stack_Ensure_minimum( rtems_configuration_get_idle_task_stack_size() ),
     
    7678    Per_CPU_Control *per_cpu = _Per_CPU_Get_by_index( processor );
    7779
    78     _Thread_Create_idle_for_cpu( per_cpu );
     80    if ( _Per_CPU_Is_processor_started( per_cpu ) ) {
     81      _Thread_Create_idle_for_cpu( per_cpu );
     82    }
    7983  }
    8084}
Note: See TracChangeset for help on using the changeset viewer.