summaryrefslogtreecommitdiffstats
path: root/testsuites/sptests/sp36/sp36.doc
blob: d67943b93a55154e3d8554cd7d12bb93adf0dc3b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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.