* posix/Makefile.am, posix/include/rtems/posix/time.h,
posix/src/adjtime.c, posix/src/alarm.c, posix/src/clockgetres.c,
posix/src/condtimedwait.c, posix/src/mqueuetimedreceive.c,
posix/src/mqueuetimedsend.c, posix/src/mutextimedlock.c,
posix/src/nanosleep.c, posix/src/posixtimespecabsolutetimeout.c,
posix/src/pthread.c, posix/src/pthreadcreate.c,
posix/src/pthreadsetschedparam.c, posix/src/ptimer1.c,
posix/src/sched.c, posix/src/semtimedwait.c,
posix/src/sigtimedwait.c, posix/src/ualarm.c,
rtems/src/clocktodtoseconds.c, score/Makefile.am,
score/preinstall.am, score/include/rtems/score/tod.h,
score/inline/rtems/score/tod.inl, score/src/coretod.c,
score/src/coretodget.c, score/src/coretodgetuptime.c,
score/src/coretodset.c, score/src/coretodtickle.c: Provide timespec
manipulation routines in the SuperCore. Use them everywhere possible.
This lead to significant cleanup in the API routines and eliminated
some of the same code from the POSIX API. At this point, the
SuperCore keeps time in POSIX timespec format properly from 1970. You
just cannot set it before 1988 in keeping with RTEMS traditional
behavior.
* score/include/rtems/score/timespec.h, score/src/timespecaddto.c,
score/src/timespecfromticks.c, score/src/timespecisvalid.c,
score/src/timespeclessthan.c, score/src/timespecsubtract.c,
score/src/timespectoticks.c: New files.
* posix/src/posixintervaltotimespec.c,
posix/src/posixtimespecsubtract.c,
posix/src/posixtimespectointerval.c: Removed.
PR 841/rtems
* itron/inline/rtems/itron/semaphore.inl, itron/src/twai_sem.c,
posix/include/rtems/posix/semaphore.h,
posix/inline/rtems/posix/semaphore.inl,
posix/src/semaphorewaitsupp.c, posix/src/semtimedwait.c,
posix/src/semwait.c, rtems/src/semobtain.c,
rtems/src/semtranslatereturncode.c,
score/include/rtems/score/coresem.h, score/src/coresemseize.c: Make
sem_timedwait more conformant to Open Group specification.
PR 805/rtems
* posix/include/rtems/posix/timer.h: Due to bad choice of error
constants by original submitter, it was impossible to create more
than 10 POSIX timers.
* posix/include/aio.h, posix/include/devctl.h,
posix/include/intr.h, posix/include/mqueue.h,
posix/include/sched.h, posix/include/semaphore.h,
posix/src/ptimer.c, posix/src/ptimer1.c:
Include <unistd.h> instead of <sys/features.h> to pick up
_POSIX_* defines (Mandated by POSIX).
* include/rtems/posix/timer.h, src/keygetspecific.c,
src/posixtimespecsubtract.c, src/ptimer1.c, src/semunlink.c:
Added casts to eliminate warnings on 16-bit targets like the h8300.
* include/rtems/posix/cancel.h, src/cancel.c, src/cancelrun.c,
src/mqueue.c, src/pthread.c, src/semaphore.c, src/setcancelstate.c,
src/setcanceltype.c, src/testcancel.c: Per PR164, corrected the
behavior of thread cancellation and did some cleanup as a side-effect.
* Mega patch merge to change the format of the object IDs to
loosen the dependency between the SCORE and the various APIs.
There was considerable work to simplify the object name management
and it appears that the name_table field is no longer needed.
This patch also includes the addition of the internal mutex
which is currently only used to protect some types of allocation
and deallocation. This significantly can reduce context
switch latency under certain circumstances. In particular,
some heap/region operations were O(n) and had dispatching
disabled. This should help enormously. With this merge,
the patch is not as clean as it should be. In particular,
the documentation has not been modified to reflect the new object
ID layout, the IDs in the test screens are not updated, and
_Objects_Get_information needs to be a real routine not inlined.
As part of this patch a lot of MP code for thread/proxy blocking
was made conditional and cleaned up.
* include/rtems/posix/key.h, src/cond.c, src/condinit.c, src/intr.c,
src/key.c, src/keycreate.c, src/keydelete.c, src/killinfo.c,
src/mqueue.c, src/mqueuecreatesupp.c, src/mutex.c, src/mutexinit.c,
src/psignal.c, src/pthread.c, src/semaphore.c,
src/semaphorecreatesupp.c: Modified as part of above.
* include/Makefile.am: Include $(top_srcdir)/../automake/*.am.
* Makefile.am: Include $(top_srcdir)/../automake/*.am.
Use ../aclocal.
* inline/Makefile.am: Include $(top_srcdir)/../automake/*.am.
* macros/Makefile.am: Include $(top_srcdir)/../automake/*.am.
* src/Makefile.am: Include $(top_srcdir)/../automake/*.am.
* include/rtems/posix/mqueue.h, inline/rtems/posix/mqueue.inl,
src/mqueue.c, src/mqueueclose.c, src/mqueuecreatesupp.c,
src/mqueuegetattr.c, src/mqueuenotify.c, src/mqueueopen.c,
src/mqueuerecvsupp.c, src/mqueuesendsupp.c, src/mqueuesetattr.c:
Per PR81 reworked to add a message queue descriptor separate from
the underlying message queue. This allows non-blocking to follow
the "open" not the underlying queue.
* include/sys/Makefile.am: Use 'PREINSTALL_FILES ='.
* include/rtems/posix/Makefile.am: Use 'PREINSTALL_FILES ='.
* include/Makefile.am: Use 'PREINSTALL_FILES ='.
* inline/rtems/posix/Makefile.am: Use 'PREINSTALL_FILES ='.
* macros/rtems/posix/Makefile.am: Use 'PREINSTALL_FILES ='.
* Added macro support to POSIX API. This is known to compile.
* macros/rtems/posix/cond.inl, macros/rtems/posix/intr.inl,
macros/rtems/posix/key.inl, macros/rtems/posix/mqueue.inl,
macros/rtems/posix/mutex.inl, macros/rtems/posix/priority.inl,
macros/rtems/posix/pthread.inl, macros/rtems/posix/semaphore.inl,
macros/rtems/posix/timer.inl: New files.
* configure.in: Removed error check for enabling macros.
* rtems/posix/mutex.h: #if 0'ed out prototypes for inlined routines
since you cannot have prototypes for macros.
* macros/rtems/posix/Makefile.am: Added files.
* include/Makefile.am: Updated to reflect files merged into newlib.
This resulted in some definitions moving to other files and thus
some secondary effects in RTEMS source code.
* include/unistd.h: Removed. Now use newlib's.
* include/rtems/posix/mqueue.h: Add include of <signal.h>.
* include/rtems/posix/threadsup.h: Add include of <sys/signal.h>
* src/execv.c: Corrected prototype to agree with newlib.
* src/execve.c: Corrected prototype to agree with newlib.
* src/execvp.c: Corrected prototype to agree with newlib.
* src/psignal.c: Rewrote reference to <siginfo.h> in comment since
that file no longer exists.
* src/pthreadkill.c: Added include of <signal.h>.
* src/sigaction.c: Added include of <signal.h>.
* src/sigtimedwait.c: Rewrote reference to <siginfo.h> in comment since
that file no longer exists.
*
* inline/rtems/posix/timer.inl, include/rtems/posix/timer.h,
inline/rtems/posix/Makefile.am, src/ptimer1.c: Redid the
style of src/ptimer1.c. Continued effort to make the
POSIX Timer implementation match that of other managers.
Added data structures required to use SuperCore Object Handler.
blocking sends when the queue is full. The SuperCore was enhanced
to support blocking on send. The existing POSIX API was debugged
and numerous test cases were added to psxmsgq01 by Jennifer Averett.
SuperCore enhancements and resulting modifications to other APIs
were done by Joel.
There is one significant point of interpretation for the POSIX API.
What happens to threads already blocked on a message queue when the
mode of that same message queue is changed from blocking to non-blocking?
We decided to unblock all waiting tasks with an EAGAIN error just
as if a non-blocking version of the same operation had returned
unsatisfied. This case is not discussed in the POSIX standard and
other implementations may have chosen differently.
which (among other things) converted the mptests to automake.
SUB_DIRS was used instead of SUBDIRS in some Makefile.ins
(apparently a leftover from moving the start* directories)
Addtional major bugs:
* psxtests/include was empty (incomplete psxtests changes).
* bogus handling of *.scn in itrontests (screens/sptests vs.
screens/itrontests installation dirs)
In addition I have added a few more changes (I couldn't resist)
* automake support for itrontests
* OPERATION_COUNT support in tmitrontests/
* automake support for tmitrontests
* automake suppport for mptests
* Some (minor) corrections to several configure.in/Makefile.ams
=> c/src/tests/ is completly under automake control, now.
=> we could start to sort out the structural issues with c/src/tests
(tests/support, stubdr, tools, get "make dist" working)
.. a major configuration cleanup
... major enhancement of automake support.
... and it contains a *major* breakthough:
Automake support for libchip and libmisc *LEAF* directories.
To implement this I have used several nasty tricks
* The basical trick is to wrap an old Makefile.in's contents into a
Makefile.am and still continue to use (i.e include) the old
*.cfg files.
* Replaced each INSTALL_IF_CHANGE and INSTALL_VARIANT with make
dependencies
* Add a gnu-make ifdef AUTOMAKE to main.cfg to avoid conflicts between
automake and RTEMS make rules
* Replaced each install:: and preinstall:: rule with make dependencies
* Replaced SUB_DIRS with SUBDIRS in all Makefile.ins (Automake
convention)
* Removed each manually added autoconf substitution which automake
performs automatically.
This is not yet full automake support, because using the temporary
installation directory, preinstallation in general and building variants
are in contradiction to automake's basic working principles ...
... the new Makefile.ams work still somewhat clumsy
... nevertheless they work (quite well).
WARNING:
At first glance this patch is small, but
* it affects the whole configuration system.
* it opens the road to introducing automake to all Makefile.ins
currently not being under automake control.
JOEL> Does this remove or add any files?
Both, all Makefile.ins below libchip and libmisc get replaced with
Makefile.ams.