forked from Imagelibrary/rtems
* Makefile.am, configure.ac: Add support for proper stacking of priority inheritance on mutexes as well as enforce proper order of release. * sp36/.cvsignore, sp36/Makefile.am, sp36/sp36.doc, sp36/sp36.scn: New files.
43 lines
1.1 KiB
Plaintext
43 lines
1.1 KiB
Plaintext
This is a simple test program to demonstrate strict order mutex.
|
|
|
|
1)What's strict order mutex ?
|
|
|
|
In rtems,when a task release a priority_inheritance or
|
|
priority ceiling semaphore,the kernel detect whether
|
|
this task holds priority_inheritance or priority
|
|
ceiling semaphore, if not, set the priority of task
|
|
back to real priority of task.
|
|
This method is right, but in theory, we would like
|
|
to reset the priority after releasing the mutex if
|
|
releasing it in LIFO order.Do it like this can decrease
|
|
the blocking time of a higher priority task .
|
|
|
|
2)How to enable "strict order mutex " ?
|
|
|
|
When configuring the rtems , add
|
|
ENABLE_STRICT_ORDER_MUTEX=1
|
|
to your configure parameter.
|
|
|
|
|
|
3)About this test program
|
|
|
|
T0,T1,S0,S1
|
|
|
|
T0,priority 4
|
|
T1,priority 1
|
|
|
|
S0,priority inheritance
|
|
S1,priority ceiling,priority ceiling 1
|
|
|
|
1,T0 obtain S0 then obtain S1, priority of T0 should be improved to 1
|
|
2,T0 try to release S0, but not in strict order, return error code
|
|
3,T0 release S1,the priority of T0 back to 4
|
|
4,T1 try to obtain S0
|
|
5,T1 should be blocked and the priority of T0 should be improved to 1
|
|
6,T0 release S0
|
|
7,T1 obtain S0
|
|
8,OVER.
|
|
|
|
|
|
|