* posix/src/pthread.c: Address sporadic server edge cases. Do not
change priority if thread is holding a priority ceiling or
inheritance mutex. Do not change it if it looks like the thread has
manually changed its priority. Style cleanup on file with new
comments added.
* libcsupport/Makefile.am, posix/Makefile.am, rtems/Makefile.am,
sapi/Makefile.am, score/Makefile.am,
score/include/rtems/score/heap.h: HEAP_BLOCK_USED_OVERHEAD was under
by one uint32_t. This showed up in the unlimited and heapwalk tests
on ARM targets.
* posix/src/mqueuecreatesupp.c, posix/src/mqueuenametoid.c,
posix/src/mqueueopen.c, posix/src/semaphorecreatesupp.c: Tinker with
error handling for name too long. Use strnlen to ensure we do not run
off the end of the maximum length string.
* posix/src/mqueuecreatesupp.c: Now that the number of POSIX message
queues and message queue descriptors are independently configured,
this code is reachable.
* posix/include/rtems/posix/config.h, posix/src/mqueue.c,
sapi/include/confdefs.h: Add configuration of posix message queue
file descriptors as separate entity.
* posix/src/psxtransschedparam.c, posix/src/pthread.c: Add error checks
for 0 time on sporadic scheduler replenish period and initial budget.
This avoids having to correct for it in the TSR, so we can eliminate
the check for ticks == 0 there.
* posix/src/killinfo.c: Add _Thread_Enable_dispatch() on EAGAIN
error case. Add debug print on loop processing threads waiting
for signal.
* posix/src/psignal.c: When the sigwait() Thread Queue processing loop
was changed to FIFO, I forgot to change the initialization to match.
* posix/include/rtems/posix/key.h, posix/src/keycreate.c,
posix/src/keydelete.c, posix/src/keyrundestructors.c: Restructure a
bit to make it easier to do coverage analysis. Eliminate is_active
member of control structure because it was redundant with very the
key object was open or closed.
* posix/include/rtems/posix/cancel.h, posix/src/cancel.c,
posix/src/canceleval.c, posix/src/setcancelstate.c,
posix/src/setcanceltype.c: Fix a minor bug in the previous
modification which resulted in psxcancel failing.
* posix/src/mutexsetprioceiling.c: Restructure to eliminate code
paths which are unreachable. Also add more comments.
* score/src/coremutexsurrender.c: Mark some code as RTEMS_DEBUG only
since it cannot be hit unless coremutexseize.c is broken.
* posix/Makefile.am, posix/src/mutex.c, posix/src/mutexinit.c: Add
initial support for the pthread mutex type attribute added by UNIX98.
It can be normal, recursive, errorcheck or default.
* posix/src/mutexattrgettype.c, posix/src/mutexattrsettype.c: New files.
* itron/src/task.c, posix/src/pthread.c, rtems/src/tasks.c,
sapi/src/exinit.c, score/include/rtems/score/apiext.h,
score/src/apiext.c: No APIs currently implemented use the
predriver_hook so disable it until such time as it is used.
* posix/src/killinfo.c, posix/src/mutexinit.c, posix/src/psignal.c,
posix/src/psignalchecksignal.c, posix/src/pthread.c,
posix/src/pthreadexit.c, posix/src/pthreadinitthreads.c: Remove
includes of <assert.h> where possible. Make other uses conditional on
ifdef RTEMS_DEBUG.
* posix/Makefile.am, posix/include/rtems/posix/priority.h,
posix/include/rtems/posix/pthread.h,
posix/inline/rtems/posix/priority.inl, posix/src/killinfo.c,
posix/src/pthread.c, posix/src/pthreadcreate.c,
posix/src/pthreadsetschedparam.c: Various modifications to improve
binary code coverage analysis. Some of these are to mark code as
debug only. Some are to break conditional expressions into multiple
lines. Some are to move inline methods that are not time critical
into subroutines to make them easier to test. Inlining them multiple
times means that their logic paths are spread across multiple
methods. This explodes the test cases required.
* posix/src/psxpriorityisvalid.c, posix/src/psxtransschedparam.c: New files.
* libcsupport/src/gxx_wrappers.c, posix/include/mqueue.h,
posix/include/rtems/posix/semaphore.h,
posix/inline/rtems/posix/barrier.inl,
posix/inline/rtems/posix/key.inl,
posix/inline/rtems/posix/mqueue.inl,
posix/inline/rtems/posix/rwlock.inl,
posix/inline/rtems/posix/semaphore.inl,
posix/inline/rtems/posix/spinlock.inl,
posix/inline/rtems/posix/timer.inl, posix/src/condget.c,
posix/src/mqueuenametoid.c, posix/src/mutexget.c,
posix/src/semaphorenametoid.c, posix/src/semopen.c,
sapi/src/itronapi.c, sapi/src/posixapi.c: Make changes necessary for
all tests to run on SPARC with 16-bit Ids. This required ensuring
that all POSIX and compilering binding code makes a distinction
between the public Id type (e.g. pthread_t, etc.) and the RTEMS
Object_Id type. All POSIX Object Get routines should not take the
POSIX Id type as the argument. Sixteen bit RTEMS Ids should be placed
into the 32-bits reserved by the POSIX API type in a uniform manner
now. This removed all assumptions that the external Id types in POSIX
and ITRON are the same as the internal Object Id type.
* libcsupport/src/__times.c, posix/src/adjtime.c,
posix/src/clockgetres.c, posix/src/sysconf.c,
rtems/src/clockgettickspersecond.c, rtems/src/clockgettod.c,
rtems/src/clockset.c, rtems/src/clocktodvalidate.c,
score/src/timespecfromticks.c, score/src/timespectoticks.c,
score/src/ts64toticks.c: More case converted to use configuration
table entry not _TOD_Microseconds_per_tick.
* itron/include/rtems/itron/itronapi.h, libmisc/capture/capture.c,
libmisc/monitor/mon-config.c, libmisc/monitor/mon-driver.c,
libmisc/monitor/mon-itask.c, libmisc/monitor/mon-mpci.c,
posix/include/rtems/posix/config.h,
posix/include/rtems/posix/posixapi.h,
rtems/include/rtems/rtems/config.h,
rtems/include/rtems/rtems/rtemsapi.h, rtems/src/taskinitusers.c,
sapi/include/confdefs.h, sapi/include/rtems/config.h,
sapi/include/rtems/init.h, sapi/src/exinit.c, sapi/src/itronapi.c,
sapi/src/posixapi.c, sapi/src/rtemsapi.c, score/src/isr.c,
score/src/thread.c, score/src/threadcreateidle.c,
score/src/threadstackallocate.c, score/src/threadstackfree.c,
score/src/wkspace.c: Eliminate pointers to API configuration tables
in the main configuration table. Reference the main configuration
table and the API configuration tables directly using the confdefs.h
version rather than obtaining a pointer to it. This eliminated some
variables, a potential fatal error, some unnecessary default
configuration structures. Overall, about a 4.5% reduction in the code
size for minimum and hello on the SPARC.
* itron/src/chg_pri.c, itron/src/cre_tsk.c, itron/src/rot_rdq.c,
posix/Makefile.am, posix/include/rtems/posix/mutex.h,
posix/include/rtems/posix/priority.h, posix/src/mutex.c,
score/include/rtems/score/priority.h: Run all tests successfully with
maxixum number of priorities as 16 instead of 256. This was done by
temporarily modifying the score priority.h maximum. This allowed
testing of all API code to ensure that it worked properly with a
reduced number of priorities. Most modifications were to switch from
hard-coded maximum to using the SuperCore variable based upon
configured number.
* posix/src/mutexdefaultattributes.c: Removed.
* libcsupport/src/__times.c, libmisc/cpuuse/cpuusagereport.c,
libmisc/cpuuse/cpuusagereset.c, posix/src/clockgettime.c,
posix/src/pthread.c, posix/src/timersettime.c,
rtems/include/rtems/rtems/ratemon.h,
rtems/src/clockgetsecondssinceepoch.c, rtems/src/clockgetuptime.c,
rtems/src/ratemongetstatus.c, rtems/src/ratemonperiod.c,
rtems/src/ratemonreportstatistics.c, rtems/src/taskwakewhen.c,
rtems/src/timerfirewhen.c, rtems/src/timerserver.c,
rtems/src/timerserverfirewhen.c, score/Makefile.am,
score/preinstall.am, score/include/rtems/score/thread.h,
score/include/rtems/score/tod.h, score/src/coretod.c,
score/src/coretodget.c, score/src/coretodgetuptime.c,
score/src/coretodset.c, score/src/coretodtickle.c,
score/src/threaddispatch.c, score/src/threadinitialize.c: Add
SuperCore handler Timestamp to provide an opaque class for the
representation and manipulation of uptime, time of day, and the
difference between two timestamps. By using SuperCore Timestamp, it
is clear which methods and APIs really have to be struct timespec and
which can be in an optimized native format.
* score/include/rtems/score/timestamp.h,
score/src/coretodgetuptimetimespec.c: New files.