These patches move forward toward a goal to provide support for the CLOCK_ABSTIME in POSIX. Version 2 includes fixes to address Sebastian's review on version 1. In addition to the clock_nanosleep service, now I also include cond_timedwait. Timeout fields are in the threadq context, with a new type Watchdog_Discipline and corresponding relative, absolute, and now WATCHDOG_NO_TIMEOUT uses this type. For backward compatibility, the threadq enqueue interprets relative discipline with a timeout of 0 as a WATCHDOG_NO_TIMEOUT.
v2: * revert back to 32-bit watchdog intervals. * consolidate functions for setting context timeout params. * add abstime for cond_timewait (patches 4/5 and 5/5). * fix switch logic and local var use in threadq enqueue. Gedare Bloom (5): cpukit: Add and use Watchdog_Discipline. posix: add clock_nanosleep and tests cpukit/rtems: fix return type mismatch for _TOD_To_seconds posix: refactor cond wait support to defer abstime conversion posix: cond_timedwait remember and use clock from condattr cpukit/libnetworking/rtems/rtems_glue.c | 2 +- cpukit/posix/include/rtems/posix/cond.h | 1 + cpukit/posix/include/rtems/posix/condimpl.h | 7 +- cpukit/posix/src/condinit.c | 2 +- cpukit/posix/src/condtimedwait.c | 28 +---- cpukit/posix/src/condwait.c | 3 +- cpukit/posix/src/condwaitsupp.c | 34 +++++- cpukit/posix/src/mqueuerecvsupp.c | 2 +- cpukit/posix/src/mqueuesendsupp.c | 2 +- cpukit/posix/src/mqueuetimedreceive.c | 2 +- cpukit/posix/src/mqueuetimedsend.c | 2 +- cpukit/posix/src/mutexlocksupp.c | 4 +- cpukit/posix/src/mutextimedlock.c | 2 +- cpukit/posix/src/nanosleep.c | 54 ++++++++-- cpukit/posix/src/pbarrierwait.c | 2 +- cpukit/posix/src/prwlockrdlock.c | 2 +- cpukit/posix/src/prwlocktimedrdlock.c | 4 +- cpukit/posix/src/prwlocktimedwrlock.c | 4 +- cpukit/posix/src/prwlocktryrdlock.c | 1 - cpukit/posix/src/prwlocktrywrlock.c | 1 - cpukit/posix/src/prwlockwrlock.c | 2 +- cpukit/posix/src/pthreadjoin.c | 1 + cpukit/posix/src/semaphorewaitsupp.c | 2 +- cpukit/posix/src/semtimedwait.c | 2 +- cpukit/posix/src/sigtimedwait.c | 2 +- cpukit/rtems/src/barrierwait.c | 2 +- cpukit/rtems/src/clocktodtoseconds.c | 2 +- cpukit/rtems/src/msgqreceive.c | 2 +- cpukit/rtems/src/msgqsend.c | 1 - cpukit/rtems/src/msgqurgent.c | 1 - cpukit/rtems/src/regiongetsegment.c | 1 + cpukit/rtems/src/semobtain.c | 7 +- cpukit/score/include/rtems/score/corebarrierimpl.h | 5 - cpukit/score/include/rtems/score/coremsgimpl.h | 10 -- cpukit/score/include/rtems/score/coremuteximpl.h | 8 -- cpukit/score/include/rtems/score/corerwlockimpl.h | 6 -- cpukit/score/include/rtems/score/coresemimpl.h | 3 - cpukit/score/include/rtems/score/mrspimpl.h | 5 +- cpukit/score/include/rtems/score/threadimpl.h | 11 +- cpukit/score/include/rtems/score/threadq.h | 12 +++ cpukit/score/include/rtems/score/threadqimpl.h | 67 ++++++++++-- cpukit/score/include/rtems/score/todimpl.h | 2 + cpukit/score/include/rtems/score/watchdog.h | 40 ++++++-- cpukit/score/include/rtems/score/watchdogimpl.h | 38 +++---- cpukit/score/src/apimutexlock.c | 3 +- cpukit/score/src/condition.c | 21 ++-- cpukit/score/src/corebarrierwait.c | 2 - cpukit/score/src/coremsgseize.c | 2 - cpukit/score/src/coremsgsubmit.c | 2 - cpukit/score/src/coremutexseize.c | 5 +- cpukit/score/src/corerwlockobtainread.c | 2 - cpukit/score/src/corerwlockobtainwrite.c | 2 - cpukit/score/src/coretodabsolutetimeout.c | 9 +- cpukit/score/src/futex.c | 2 +- cpukit/score/src/mpci.c | 3 +- cpukit/score/src/mutex.c | 24 ++--- cpukit/score/src/semaphore.c | 2 +- cpukit/score/src/threadqenqueue.c | 30 ++++-- cpukit/score/src/threadrestart.c | 2 +- testsuites/psxtests/psxhdrs/Makefile.am | 1 + testsuites/psxtests/psxhdrs/time/clock_nanosleep.c | 35 +++++++ testsuites/psxtmtests/Makefile.am | 3 + testsuites/psxtmtests/configure.ac | 3 + .../psxtmtests/psxtmclocknanosleep01/Makefile.am | 25 +++++ testsuites/psxtmtests/psxtmclocknanosleep01/init.c | 59 +++++++++++ .../psxtmclocknanosleep01.doc | 12 +++ .../psxtmtests/psxtmclocknanosleep02/Makefile.am | 25 +++++ testsuites/psxtmtests/psxtmclocknanosleep02/init.c | 109 ++++++++++++++++++++ .../psxtmclocknanosleep02.doc | 10 ++ .../psxtmtests/psxtmclocknanosleep03/Makefile.am | 25 +++++ testsuites/psxtmtests/psxtmclocknanosleep03/init.c | 114 +++++++++++++++++++++ .../psxtmclocknanosleep03.doc | 10 ++ 72 files changed, 736 insertions(+), 197 deletions(-) create mode 100644 testsuites/psxtests/psxhdrs/time/clock_nanosleep.c create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep01/Makefile.am create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep01/init.c create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep01/psxtmclocknanosleep01.doc create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep02/Makefile.am create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep02/init.c create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep02/psxtmclocknanosleep02.doc create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep03/Makefile.am create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep03/init.c create mode 100644 testsuites/psxtmtests/psxtmclocknanosleep03/psxtmclocknanosleep03.doc -- 1.9.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel