[PATCH 00/11] 4.10 Fix Priority Inheritance Protocol

Gedare Bloom gedare at rtems.org
Fri Mar 23 16:15:36 UTC 2018


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



More information about the devel mailing list