- Timestamp:
-
04/18/14 18:18:40 (10 years ago)
- Author:
-
Mayes
- Comment:
-
/* Status of Effort*/
Legend:
- Unmodified
- Added
- Removed
- Modified
-
v68
|
v69
|
|
13 | 13 | |+ |
14 | 14 | |- |
15 | | |'''Design Issue''' || '''Status Summary''' || '''Notes''' |
| 15 | |'''Design Issues''' || '''Summary''' || '''Notes''' |
16 | 16 | |- |
17 | 17 | | [http://www.rtems.org/wiki/index.php/SMP#Low-Level_Start Low Level Start] || TBD || |
… |
… |
|
46 | 46 | |- |
47 | 47 | | [http://www.rtems.org/wiki/index.php/SMP#Semaphores_and_Mutexes Semaphores and Mutexes] || TBD || |
| 48 | |- |
| 49 | |} |
| 50 | |
| 51 | |
| 52 | {| border="1" style="margin: 1em auto 1em auto;text-align: center;" |
| 53 | |+ |
| 54 | |- |
| 55 | |'''Implementation Status''' || '''Summary''' || '''Notes''' |
| 56 | |- |
| 57 | | [http://www.rtems.org/wiki/index.php/SMP#Tool_Chain Tool Chain] || TBD || |
| 58 | |- |
| 59 | | [http://www.rtems.org/wiki/index.php/SMP#Profiling Profiling] || TBD || |
| 60 | |- |
| 61 | | [http://www.rtems.org/wiki/index.php/SMP#Interrupt_Support_2 Interrupt Support] || TBD || |
| 62 | |- |
| 63 | | [http://www.rtems.org/wiki/index.php/SMP#Clustered_Scheduling_2 Clustered Scheduling] || TBD || |
| 64 | |- |
| 65 | | [http://www.rtems.org/wiki/index.php/SMP#Multiprocessor_Resource_Sharing_Protocol_-_MrsP Multiprocessor Resource Sharing Protocol - MrsP] || TBD || |
| 66 | |- |
| 67 | | [http://www.rtems.org/wiki/index.php/SMP#Fine_Grained_Locking Fine Grained Locking] || TBD || |
| 68 | |- |
| 69 | | [http://www.rtems.org/wiki/index.php/SMP#Post-Switch_Actions Post-Switch Actions] || TBD || |
| 70 | |- |
| 71 | | [http://www.rtems.org/wiki/index.php/SMP#Thread_Delete.2FRestart Thread Delete/Restart] || TBD || |
| 72 | |- |
| 73 | | [http://www.rtems.org/wiki/index.php/SMP#Barrier_Synchronization Barrier Synchronization] || TBD || |
| 74 | |- |
| 75 | | [http://www.rtems.org/wiki/index.php/SMP#Low-Level_Broadcasts Low-Level Broadcasts] || TBD || |
| 76 | |- |
| 77 | | [http://www.rtems.org/wiki/index.php/SMP#Termios_Framework Termios Framework] || TBD || |
48 | 78 | |- |
49 | 79 | |} |
… |
… |
|
1482 | 1512 | directly which thread is about to block on that mutex. Some sequences assume |
1483 | 1513 | exactly one executing thread in the system, which is not true on a SMP system |
1484 | | with more than one processor. With an SMP lock per mutex object all state |
1485 | | information for this mutex must be present in the mutex object. So the locked |
1486 | | mutex to locked mutex with a waiting thread change must be atomic with respect |
1487 | | to the mutex SMP lock. Later mutex timeout or release operations can then get |
1488 | | the waiting thread and deal with it accordingly. |
1489 | | = Implementation = |
1490 | | |
1491 | | |
1492 | | The blocking operation synchronization state must move from the synchronization |
1493 | | object (e.g. mutex, message queue) to the thread wait information |
1494 | | (Thread_Wait_information) since it is clear that the thread has to block and |
1495 | | not the object. There may be also multiple threads on different processors |
1496 | | which queue up on a mutex at the same time. |
1497 | | |
1498 | | Blocking threads must be registered in the object under the SMP lock of the |
1499 | | object and must be independent of the scheduler data structures. Thus we can |
1500 | | no longer use the normal chain node of the thread and instead have to add a |
1501 | | chain node to the thread wait information. |
1502 | | |
1503 | | The thread queue operations must no longer use internal locks (e.g. ISR |
1504 | | disable/enable). This simplifies them considerable. The thread queue |
1505 | | operations must be performed under the SMP lock of the object. The drawback is |
1506 | | that the time of disabled interrupts increases. |
| 1514 | with more than one proce |