Changes between Version 60 and Version 61 of Developer/SMP


Ignore:
Timestamp:
Apr 15, 2014, 7:54:29 PM (6 years ago)
Author:
Mayes
Comment:

/* Status */

Legend:

Unmodified
Added
Removed
Modified
  • Developer/SMP

    v60 v61  
    1111
    1212TBD: Insert table of status per task here with links to task
     13
     14{| border="1" style="margin: 1em auto 1em auto;text-align: center;"
     15|+
     16|-
     17|'''Task Name''' || '''Status Summary'''
     18|-
     19| [http://www.rtems.org/wiki/index.php/SMP#Low-Level_Start Low Level Start] || Incomplete
     20|-
     21| [http://www.rtems.org/wiki/index.php/SMP#Processor_Affinity Processor Affinity] || Ongoing
     22|-
     23| [http://www.rtems.org/wiki/index.php/SMP#Atomic_Operations Atomic Operations] || Complete
     24|-
     25| [http://www.rtems.org/wiki/index.php/SMP#SMP_Locks SMP Locks] || Complete
     26|-
     27| [http://www.rtems.org/wiki/index.php/SMP#ISR_Locks ISR Locks] || Complete
     28|-
     29| [http://www.rtems.org/wiki/index.php/SMP#Giant_Lock_vs._Fine_Grained_Locking Giant Lock vs Fine Grained Locking] || Complete
     30|-
     31| [http://www.rtems.org/wiki/index.php/SMP#Watchdog_Handler Watchdog Handler] || Complete
     32|-
     33| [http://www.rtems.org/wiki/index.php/SMP#Per-CPU_Control Per-CPU Control] || Complete
     34|-
     35| [http://www.rtems.org/wiki/index.php/SMP#Interrupt_Support Interrupt Support] || Complete
     36|-
     37| [http://www.rtems.org/wiki/index.php/SMP#Global_Scheduler Global Scheduler] || Complete
     38|-
     39| [http://www.rtems.org/wiki/index.php/SMP#Clustered_Scheduling Clustered Scheduling] || Complete
     40|-
     41| [http://www.rtems.org/wiki/index.php/SMP#Task_Variables Task Variables] || Complete
     42|-
     43| [http://www.rtems.org/wiki/index.php/SMP#Non-Preempt_Mode_for_Mutual_Exclusion Non-Preempt Mode for Mutual Exclusion] || Complete
     44|-
     45| [http://www.rtems.org/wiki/index.php/SMP#Thread_Restart Thread Restart] || Complete
     46|-
     47| [http://www.rtems.org/wiki/index.php/SMP#Thread_Delete Thread Delete] || Complete
     48|-
     49| [http://www.rtems.org/wiki/index.php/SMP#Semaphores_and_Mutexes Semaphores and Mutexes] || Complete
     50|-
     51|}
    1352=  Requirements  =
    1453
     
    14661505that the time of disabled interrupts increases.  The FIFO thread queue
    14671506operations are trivial doubly-linked list operations.  The priority thread
    1468 queue operations execute in a worst-case time which depends only on the maximum
    1469 number of priorities.
    1470 =  Post-Switch Actions  =
    1471 
    1472 ==  Reason  ==
    1473 
    1474 
    1475 Currently threads are assigned to processors for execution by the scheduler
    1476 responsible for this thread.  It is unknown to the system when a thread
    1477 actually starts or terminates execution on its assigned processor.  The
    1478 termination event is important for the following features
    1479  *  explicit thread migration, e.g. if a thread should move from one scheduler domain to another,
    1480  *  thread deletion, since the thread stack is in use until the thread stopped execution, or
    1481  *  restart of threads executing on a remote processor.
    1482 ==  RTEMS API Changes  ==
    1483 
    1484 
    1485 None.
    1486 ==  Implementation  ==
    1487 
    1488 
    1489 One approach to do post-switch actions could be to spin on the per-processor
    1490 variable reflecting the executing thread.  This has at least two problems
    1491 # it doesn't work if the executing thread wants to alter its own state, and
    1492 # this spinning must be done with the scheduler lock held and interrupts disabled, this is a disaster for the interrupt latency,
    1493 
    1494 The proposed solution is to use an optional action handler which is active in
    1495 case the thread execution termination matters.  In _Thread_Dispatch() we have
    1496 already the post-switch extensions invoked after a thread switch.
    1497 Unfortunately they execute after thread dispatching is enabled again and at
    1498 this point the current processor may have already changed due to thread
    1499 migration requested by an interrupt.
    1500 
    1501 We need a context which executes right after the thread context switch on the
    1502 current processor, but without the per-processor lock acquired (to prevent lock
    1503 order reversal problems and keep the interrupt latency small).
     1507queue operations execute in a worst-case t