Hello Sebastian,

On Wednesday 21 of September 2016 09:08:25 Sebastian Huber wrote:
> Hello,
>
> I checked in a patch set today that reworks the thread priority
> management. This improves the priority inheritance protocol for example.

big congratulation and thanks. I have checked master today and my tests
are happy about the change. I have tested on i386 under QEMU in UP
configuration for now.

I have test for checking priority release timing included
in my RTEMS templates for long time

This one is based on classic API

  
http://rtime.felk.cvut.cz/gitweb/rtems-devel.git/tree/HEAD:/rtems-tests/prioinh_check

The second is POSIX based and actual test file "prio_inherit_test.c" can be 
compiled
for Linux, VxWorks etc.

  
http://rtime.felk.cvut.cz/gitweb/rtems-devel.git/tree/HEAD:/rtems-tests/prioinh_posix

I am attaching logs. The POSIX test on actual RTEMS implementation
"prioinh_posix-new.log" matches "prioinh_posix-linux-1-cpu.log" matches Linux 
one
when limited to one CPU

  taskset -c 0 ./prioinh_posix-linux

(The test has to be run by root or user with RT capabilities on Linux).

The difference between previous RTEMS implementation
  prioinh_posix-old.log
and actual
  prioinh_posix-new.log
in the form of diff

 RTEMS v 4.11.99
 Starting application prioinh_check

 RTEMS Shell on /dev/console. Use 'help' to list commands.
 [/] # *** Starting up Task_1 ***
 THI created
 TMID created
 LO created
 1 obtained SLO
 1 going to release RLO
 1 obtained SHI
 1 going to release RHI
 THI released (RHI)
 TLO released (RLO)
 TLO released (RLO)
 1 going to release RMID
 1 going to release SHI
-1 going to release SLO
 THI obtained SHI
 THI going to release SHI
 THI released SHI
 MID released (RMID)
 MID going to sleep
-1 released both SHI and SLO
-1 going to sleep
-TLO obtained SLO
-TLO going to release SLO
-TLO released SLO
-1 obtained SLO
-1 going to release RLO
-1 obtained SHI
-1 going to release RHI
-THI released (RHI)
-TLO released (RLO)
-1 going to release RMID
-1 going to release SHI
 1 going to release SLO
-THI obtained SHI
-THI going to release SHI
-THI released SHI
-MID released (RMID)
-MID going to sleep
 1 released both SHI and SLO
 1 going to sleep

Important is that when low priority thread releases
semaphore/mutex shared with high pririty thread
then it keeps the priority gained from high priority
thread when it blocks on that semaphore.

RLO and RHI are additional semaphores which
are controlled by test controllong task "1".
This way it is ensured that semaphores/mutexes SHI
and SLO are obtained by TLO and THI task is such
order that THI task has to wait for TLO task.

Interpreting data recorded on SMP system is much
more complex and I do not remember if the sequnce
stays or stays not deterministic in such case.
It is different for sure, because outputs can
go in parallel. But check can be used even on SMP
to check for late priority release.

Best wishes,

             Pavel
*** Starting up Task_1 ***
THI created
TMID created
LO created
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
RTEMS v 4.11.99
Starting application prioinh_check

RTEMS Shell on /dev/console. Use 'help' to list commands.
[/] # *** Starting up Task_1 ***
THI created
TMID created
LO created
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 going to release SLO
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO                                                          
*** Starting up Task_1 ***
THI created
TMID created
LO created
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
TLO released (RLO)
THI released (RHI)
1 going to release RMID
MID released (RMID)
1 going to release SHI
THI obtained SHI
MID going to sleep
THI going to release SHI
THI released SHI
1 going to release SLO
1 released both SHI and SLO
TLO obtained SLO
1 going to sleep
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
MID released (RMID)
1 going to release SHI
THI obtained SHI
MID going to sleep
THI going to release SHI
THI released SHI
1 going to release SLO
1 released both SHI and SLO
TLO obtained SLO
1 going to sleep
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
TLO released (RLO)
THI released (RHI)
1 going to release RMID
MID released (RMID)
MID going to sleep
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
1 going to release SLO
1 released both SHI and SLO
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 going to sleep
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
MID released (RMID)
1 going to release SHI
THI obtained SHI
MID going to sleep
THI going to release SHI
THI released SHI
1 going to release SLO
1 released both SHI and SLO
TLO obtained SLO
1 going to sleep
TLO going to release SLO
TLO released SLO
RTEMS v 4.11.99
Starting application prioinh_check

RTEMS Shell on /dev/console. Use 'help' to list commands.
[/] # *** Starting up Task_1 ***
THI created
TMID created
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
LO created
TLO released (RLO)
1 priority is 40
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 priority is 50
1 going to release SLO
1 released both SHI and SLO
1 priority is 50
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 priority is 40
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 priority is 50
1 going to release SLO
1 released both SHI and SLO
1 priority is 50
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 priority is 40
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 priority is 50
1 going to release SLO
1 released both SHI and SLO
1 priority is 50
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 priority is 40
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 priority is 50
1 going to release SLO
1 released both SHI and SLO
1 priority is 50
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 priority is 40
1 going to release RMID
1 going to release SHI
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 priority is 50
1 going to release SLO
1 released both SHI and SLO
1 priority is 50
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
RTEMS v 4.11.99
Starting application prioinh_check

RTEMS Shell on /dev/console. Use 'help' to list commands.
[/] # *** Starting up Task_1 ***
THI created
TMID created
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
LO created
TLO released (RLO)
1 priority is 40
1 going to release RMID
1 going to release SHI
1 priority is 40
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 priority is 50
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 priority is 40
1 going to release RMID
1 going to release SHI
1 priority is 40
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 priority is 50
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 priority is 40
1 going to release RMID
1 going to release SHI
1 priority is 40
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 priority is 50
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 priority is 40
1 going to release RMID
1 going to release SHI
1 priority is 40
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 priority is 50
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 priority is 40
1 going to release RMID
1 going to release SHI
1 priority is 40
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 priority is 50
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 priority is 40
1 going to release RMID
1 going to release SHI
1 priority is 40
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 priority is 50
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 priority is 40
1 going to release RMID
1 going to release SHI
1 priority is 40
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 priority is 50
1 going to sleep
RTEMS v 4.11.99
Starting application prioinh_check

RTEMS Shell on /dev/console. Use 'help' to list commands.
[/] # *** Starting up Task_1 ***
THI created
TMID created
LO created
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
1 obtained SLO
1 going to release RLO
1 obtained SHI
1 going to release RHI
THI released (RHI)
TLO released (RLO)
1 going to release RMID
1 going to release SHI
1 going to release SLO
THI obtained SHI
THI going to release SHI
THI released SHI
MID released (RMID)
MID going to sleep
1 released both SHI and SLO
1 going to sleep
TLO obtained SLO
TLO going to release SLO
TLO released SLO
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to