* rtems/score/cpu.h: Modifiy inline assembly language
constraints to use a data register as the CTL/STI
instructions requires. This is not only more correct,
it avoids GCC PR31787.
* sapi/Makefile.am, sapi/include/rtems/io.h, sapi/src/io.c: Split into
one function per file execpt io.c which contains required
initialization methods.
* sapi/src/ioclose.c, sapi/src/iocontrol.c, sapi/src/iodata.c,
sapi/src/ioinitialize.c, sapi/src/ioopen.c, sapi/src/ioread.c,
sapi/src/ioregisterdriver.c, sapi/src/iounregisterdriver.c,
sapi/src/iowrite.c: New files.
* sapi/include/confdefs.h, sapi/src/io.c: Readded code to copy driver
table into Workspace but now it is only done if the application needs
extra slots for dynamic driver registration. Cleaned up
rtems_io_register_driver and rtems_io_unregister_driver code and
added numerous error cases to register.
* libmisc/Makefile.am, libmisc/monitor/mon-object.c,
libmisc/monitor/monitor.h, sapi/include/confdefs.h,
sapi/include/rtems/config.h, sapi/include/rtems/io.h,
sapi/src/exinit.c, sapi/src/io.c: Eliminate maximum_drivers
configuration parameter since it was used to configure a no longer
used feature. Device names are now part of the filesystem not in a
table. This also eliminated the variables _IO_Number_of_devices and
_IO_Driver_name_table from RTEMS as well as the memory allocation
used to populate _IO_Driver_name_table.
* libmisc/monitor/mon-dname.c: Removed.
* sapi/include/confdefs.h: Add CONFIGURE_MESSAGE_BUFFER_MEMORY so there
is less dependence on CONFIGURE_MEMORY_OVERHEAD. Do not arbitrarily
add 1 to CONFIGURE_MEMORY_OVERHEAD so we do not waste a kilobyte for
unused Workspace. Round the workspace required size to an 8 byte
boundary instead of a 0x400 byte one. We may end up needing to add 8
bytes again to account for the alignment rounding.
* rtems/Makefile.am, rtems/include/rtems/rtems/barrier.h,
rtems/include/rtems/rtems/dpmem.h, rtems/include/rtems/rtems/event.h,
rtems/include/rtems/rtems/message.h, rtems/include/rtems/rtems/part.h,
rtems/include/rtems/rtems/ratemon.h, rtems/include/rtems/rtems/region.h,
rtems/include/rtems/rtems/sem.h, rtems/include/rtems/rtems/tasks.h,
rtems/include/rtems/rtems/timer.h, sapi/Makefile.am,
sapi/include/rtems/extension.h: Split Classic API data instantiation
into individual files. This reduces the size of the BSS section when
an optional manager stub is used. Some tests showed about a 600 byte
reduction in BSS size.
* rtems/src/taskinitusers.c, sapi/src/rtemsapi.c, rtems/src/tasks.c:
Eliminated the variables _RTEMS_tasks_User_initialization_tasks and
_RTEMS_tasks_Number_of_initialization_tasks because they were only
used in one place after initialized. It was a waste of space.
* rtems/src/barrierdata.c, rtems/src/dpmem.c, rtems/src/dpmemdata.c,
rtems/src/eventdata.c, rtems/src/msgdata.c, rtems/src/partdata.c,
rtems/src/ratemondata.c, rtems/src/regiondata.c,
rtems/src/rtemstimerdata.c, rtems/src/semdata.c, rtems/src/taskdata.c,
sapi/src/extensiondata.c: New files.
* rtems/src/ratemonperiod.c: Fix math ordering bug which resulted in a
negative value in some circumstances. Also cleaned up to share uptime
declaration.
* ChangeLog, configure.ac, libcsupport/src/__times.c,
libmisc/cpuuse/cpuuse.c, libmisc/stackchk/check.c,
rtems/include/rtems/rtems/ratemon.h, rtems/src/ratemongetstatus.c,
rtems/src/ratemonperiod.c, rtems/src/ratemonreportstatistics.c,
rtems/src/ratemonresetall.c, rtems/src/ratemontimeout.c,
score/Makefile.am, score/include/rtems/score/thread.h,
score/include/rtems/score/timespec.h, score/src/threaddispatch.c,
score/src/threadinitialize.c, score/src/threadtickletimeslice.c,
score/src/timespecdivide.c: Add nanoseconds granularity to the rate
monotonic period statistics and CPU usage statistics. This capability
is enabled by default although may be conditionally disabled by the
user. It could be too much overhead on small targets but it does not
appear to be bad in early testing. Its impact on code size has not
been evaluated either. It is possible that both forms of statistics
gathering could be disabled with further tweaking of the conditional
compilation.
* score/src/timespecdividebyinteger.c: New file.
* score/src/objectgetnameasstring.c: Internal threads use string names
so in the current RTEMS source string object name can NOT be
disabled. It is probably worth considering converting the internal
threads to uint32_t style names so all the support for string names
can be conditionally disabled.
* score/Makefile.am, score/include/rtems/score/timespec.h: Add division
and greater than operations for timespecs.
* score/src/timespecdivide.c, score/src/timespecgreaterthan.c:
New files.
* libcsupport/Makefile.am, libcsupport/src/unixlibc.c: Split off dummry
rtems_io_register_name for use on unix.
* libcsupport/src/unixlibc_io.c: New file.
* score/src/coremsgseize.c: A blocking sender's message size was
pulled out of the wrong field in the Wait information structure.
* score/src/objectallocate.c: With the new optional manager support,
we only stub out the initialization. This makes it possible to attempt
to create an object with the information structure only initialized
with all zeros. This ensures we return an error cleanly in this case.
* rtems/src/region.c, sapi/src/exinit.c: Now that the Region is
an optional manager, we cannot depend on it do initialize the
internal Allocator Mutex. This was always a questionable place to
do it, so this is a cleanup.
* libmisc/cpuuse/cpuuse.c, libmisc/stackchk/check.c,
libmisc/stackchk/stackchk.h: Clean up as side-effect of making them
suitable for inclusion in the Users Guide.