This patch series fixes the PIP as described in #3361 to allow for proper step-down of priority under: vertical nesting horizontal nesting lock timeouts, and lock flushing.
A few commits backport tests from 4.11 and 5 (master) to the 4.10 branch to demonstrate the broken behavior of PIP. The last two commits are the fix to PIP. Test results without the last two commits using rtems-test: Passed: 222 Failed: 6 Timeouts: 22 Invalid: 0 ------------- Total: 250 Failures: spmutex01.exe spsem04.exe spfatal09.exe spsem03.exe psx04.exe spintrcritical09.exe Test results with the last two commits: Passed: 225 Failed: 3 Timeouts: 22 Invalid: 0 ------------- Total: 250 Failures: spfatal09.exe psx04.exe spintrcritical09.exe No new failures or timeouts compared to baseline. Synopsis below. Gedare Bloom (7): sptests: back-port spsem01, spsem02, and spsem03 from 4.11 sptests/spsem04: test prio stepdown on sem release sptests/spsem05: another test of prio stepdown on sem release sptests/spmutex01: strip out deadlock, c11, posix sptests: Add spmutex01 to build score: replace current and real priority with priority node score: add Inherited_priorities priority queue and functions Sebastian Huber (4): score: Test thread priority queue disciplines sptests/spmutex01: refactor and add deadlock test sptests/spmutex01: add tests for lock nesting sptests/spmutex01: test flush with inherit prio cpukit/itron/src/chg_pri.c | 4 +- cpukit/itron/src/ref_tsk.c | 2 +- cpukit/itron/src/rot_rdq.c | 2 +- cpukit/libmisc/capture/capture.c | 8 +- cpukit/libmisc/capture/capture.h | 4 +- cpukit/libmisc/monitor/mon-task.c | 2 +- cpukit/posix/src/killinfo.c | 12 +- cpukit/posix/src/pthread.c | 14 +- cpukit/posix/src/pthreadgetschedparam.c | 2 +- cpukit/posix/src/pthreadsetschedparam.c | 4 +- cpukit/rtems/src/tasksetpriority.c | 8 +- cpukit/score/Makefile.am | 3 +- cpukit/score/include/rtems/score/coremutex.h | 2 +- cpukit/score/include/rtems/score/thread.h | 82 ++++- cpukit/score/inline/rtems/score/coremutex.inl | 4 +- cpukit/score/src/coremutex.c | 4 +- cpukit/score/src/coremutexseize.c | 9 +- cpukit/score/src/coremutexsurrender.c | 18 +- cpukit/score/src/mpci.c | 2 +- cpukit/score/src/threadchangepriority.c | 6 +- cpukit/score/src/threadclearstate.c | 4 +- cpukit/score/src/threadinitialize.c | 6 +- cpukit/score/src/threadmp.c | 2 +- cpukit/score/src/threadprioritynode.c | 167 +++++++++ cpukit/score/src/threadqenqueuepriority.c | 10 +- cpukit/score/src/threadqextractpriority.c | 5 + cpukit/score/src/threadqflush.c | 6 + cpukit/score/src/threadreset.c | 20 +- cpukit/score/src/threadresume.c | 4 +- cpukit/score/src/threadsetpriority.c | 2 +- testsuites/sptests/Makefile.am | 2 + testsuites/sptests/configure.ac | 6 + testsuites/sptests/sp34/changepri.c | 4 +- testsuites/sptests/sp35/priinv.c | 17 +- testsuites/sptests/spmutex01/Makefile.am | 19 + testsuites/sptests/spmutex01/init.c | 495 ++++++++++++++++++++++++++ testsuites/sptests/spmutex01/spmutex01.doc | 16 + testsuites/sptests/spmutex01/spmutex01.scn | 2 + testsuites/sptests/spsem01/Makefile.am | 21 ++ testsuites/sptests/spsem01/init.c | 156 ++++++++ testsuites/sptests/spsem01/spsem01.doc | 19 + testsuites/sptests/spsem01/spsem01.scn | 15 + testsuites/sptests/spsem02/Makefile.am | 21 ++ testsuites/sptests/spsem02/init.c | 192 ++++++++++ testsuites/sptests/spsem02/spsem02.doc | 23 ++ testsuites/sptests/spsem02/spsem02.scn | 21 ++ testsuites/sptests/spsem03/Makefile.am | 19 + testsuites/sptests/spsem03/init.c | 155 ++++++++ testsuites/sptests/spsem03/spsem03.doc | 12 + testsuites/sptests/spsem03/spsem03.scn | 2 + testsuites/sptests/spsem04/Makefile.am | 19 + testsuites/sptests/spsem04/init.c | 149 ++++++++ testsuites/sptests/spsem04/spsem04.doc | 13 + testsuites/sptests/spsem04/spsem04.scn | 2 + testsuites/sptests/spsem05/Makefile.am | 19 + testsuites/sptests/spsem05/init.c | 165 +++++++++ testsuites/sptests/spsem05/spsem05.doc | 13 + testsuites/sptests/spsem05/spsem05.scn | 2 + 58 files changed, 1929 insertions(+), 88 deletions(-) create mode 100644 cpukit/score/src/threadprioritynode.c create mode 100644 testsuites/sptests/spmutex01/Makefile.am create mode 100644 testsuites/sptests/spmutex01/init.c create mode 100644 testsuites/sptests/spmutex01/spmutex01.doc create mode 100644 testsuites/sptests/spmutex01/spmutex01.scn create mode 100644 testsuites/sptests/spsem01/Makefile.am create mode 100644 testsuites/sptests/spsem01/init.c create mode 100644 testsuites/sptests/spsem01/spsem01.doc create mode 100644 testsuites/sptests/spsem01/spsem01.scn create mode 100644 testsuites/sptests/spsem02/Makefile.am create mode 100644 testsuites/sptests/spsem02/init.c create mode 100644 testsuites/sptests/spsem02/spsem02.doc create mode 100644 testsuites/sptests/spsem02/spsem02.scn create mode 100644 testsuites/sptests/spsem03/Makefile.am create mode 100644 testsuites/sptests/spsem03/init.c create mode 100644 testsuites/sptests/spsem03/spsem03.doc create mode 100644 testsuites/sptests/spsem03/spsem03.scn create mode 100644 testsuites/sptests/spsem04/Makefile.am create mode 100644 testsuites/sptests/spsem04/init.c create mode 100644 testsuites/sptests/spsem04/spsem04.doc create mode 100644 testsuites/sptests/spsem04/spsem04.scn create mode 100644 testsuites/sptests/spsem05/Makefile.am create mode 100644 testsuites/sptests/spsem05/init.c create mode 100644 testsuites/sptests/spsem05/spsem05.doc create mode 100644 testsuites/sptests/spsem05/spsem05.scn -- 2.7.4 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel