* sapi/include/confdefs.h, sapi/include/rtems/config.h,
sapi/include/rtems/init.h, sapi/src/exinit.c,
score/include/rtems/system.h, score/src/isr.c: Move
interrupt_stack_size field from CPU Table to Configuration Table.
Eliminate CPU Table from all ports. Delete references to CPU Table in
all forms.
* libcsupport/src/malloc.c, libmisc/monitor/mon-command.c,
posix/preinstall.am, posix/include/rtems/posix/cond.h,
posix/include/rtems/posix/mqueue.h,
posix/include/rtems/posix/mutex.h,
posix/include/rtems/posix/pthread.h,
posix/include/rtems/posix/semaphore.h, posix/src/conddestroy.c,
posix/src/mutexdestroy.c, posix/src/mutexinit.c,
posix/src/mutexsetprioceiling.c, posix/src/mutexunlock.c,
sapi/include/confdefs.h, sapi/include/rtems/config.h,
sapi/include/rtems/init.h, sapi/include/rtems/sptables.h,
sapi/src/exinit.c, score/include/rtems/system.h,
score/include/rtems/score/mpci.h, score/src/mpci.c,
score/src/thread.c, score/src/threadcreateidle.c,
score/src/threadstackallocate.c, score/src/threadstackfree.c,
score/src/wkspace.c: Moved most of the remaining CPU Table fields to
the Configuration Table. This included pretasking_hook,
predriver_hook, postdriver_hook, idle_task, do_zero_of_workspace,
extra_mpci_receive_server_stack, stack_allocate_hook, and
stack_free_hook. As a side-effect of this effort some multiprocessing
code was made conditional and some style clean up occurred.
* libmisc/shell/shell.h: Added comments for the parameters to the
shell_init function.
* libmisc/shell/shell.c: Only set cflags if tcflags is
non-zero. This means the shell can use the current cflags settings
and the application does not need to know the baudrate etc.
* libmisc/capture/capture.h: Fix the comment.
* rtems/src/barrierdelete.c, rtems/src/barrierrelease.c,
rtems/src/barriertranslatereturncode.c, rtems/src/barrierwait.c,
rtems/src/clockget.c, rtems/src/dpmemdelete.c,
rtems/src/dpmemexternal2internal.c,
rtems/src/dpmeminternal2external.c, rtems/src/eventsend.c,
rtems/src/eventtimeout.c, rtems/src/msgqbroadcast.c,
rtems/src/msgqdelete.c, rtems/src/msgqflush.c,
rtems/src/msgqgetnumberpending.c, rtems/src/msgqreceive.c,
rtems/src/msgqsend.c, rtems/src/msgqurgent.c, rtems/src/partdelete.c,
rtems/src/partgetbuffer.c, rtems/src/partreturnbuffer.c,
rtems/src/ratemoncancel.c, rtems/src/ratemondelete.c,
rtems/src/ratemongetstatistics.c, rtems/src/ratemongetstatus.c,
rtems/src/ratemonperiod.c, rtems/src/ratemonresetstatistics.c,
rtems/src/ratemontimeout.c, rtems/src/semdelete.c,
rtems/src/semflush.c, rtems/src/semobtain.c, rtems/src/semrelease.c,
rtems/src/semtranslatereturncode.c, rtems/src/signalsend.c,
rtems/src/taskdelete.c, rtems/src/taskgetnote.c,
rtems/src/taskissuspended.c, rtems/src/taskrestart.c,
rtems/src/taskresume.c, rtems/src/tasksetnote.c,
rtems/src/tasksetpriority.c, rtems/src/taskstart.c,
rtems/src/tasksuspend.c, rtems/src/taskvariableadd.c,
rtems/src/taskvariabledelete.c, rtems/src/taskvariableget.c,
rtems/src/timercancel.c, rtems/src/timerdelete.c,
rtems/src/timerfirewhen.c, rtems/src/timergetinfo.c,
rtems/src/timerreset.c, rtems/src/timerserverfireafter.c,
rtems/src/timerserverfirewhen.c: Restructured all code with
the switch (location) pattern so that OBJECTS_LOCAL is first
and we can fall into it and the OBJECTS_ERROR case breaks
to a return RTEMS_INVALID_ID. This eliminates the return
RTEMS_INTERNAL_ERROR at the bottom of each of these files which
was unreachable and untestable code. This resulted in a code
savings of approximately 20 bytes per file on the SPARC/ERC32.
* posix/Makefile.am: Restructed to move the
OBJECTS_LOCAL case to the top of the switch statement and
eliminate the fall-through return of POSIX_BOTTOM_REACHED. These
changes produced simplier assembly code and allowed for complete
test coverage. Also applied some consistency to the functions
that translate the core status codes to POSIX status codes.
* posix/include/rtems/posix/mutex.h,
posix/include/rtems/posix/semaphore.h, posix/src/cancel.c,
posix/src/conddestroy.c, posix/src/condsignalsupp.c,
posix/src/condwaitsupp.c, posix/src/keydelete.c,
posix/src/keygetspecific.c, posix/src/keysetspecific.c,
posix/src/mqueueclose.c, posix/src/mqueuegetattr.c,
posix/src/mqueuenotify.c, posix/src/mqueuerecvsupp.c,
posix/src/mqueuesendsupp.c, posix/src/mqueuesetattr.c,
posix/src/mqueuetranslatereturncode.c, posix/src/mutexdestroy.c,
posix/src/mutexgetprioceiling.c, posix/src/mutexinit.c,
posix/src/mutexlocksupp.c, posix/src/mutexsetprioceiling.c,
posix/src/mutexunlock.c, posix/src/pbarrierdestroy.c,
posix/src/pbarriertranslatereturncode.c, posix/src/pbarrierwait.c,
posix/src/prwlockdestroy.c, posix/src/prwlockrdlock.c,
posix/src/prwlocktimedrdlock.c, posix/src/prwlocktimedwrlock.c,
posix/src/prwlocktranslatereturncode.c, posix/src/prwlocktryrdlock.c,
posix/src/prwlocktrywrlock.c, posix/src/prwlockunlock.c,
posix/src/prwlockwrlock.c, posix/src/pspindestroy.c,
posix/src/pspinlock.c, posix/src/pspinlocktranslatereturncode.c,
posix/src/pspintrylock.c, posix/src/pspinunlock.c,
posix/src/pthreaddetach.c, posix/src/pthreadequal.c,
posix/src/pthreadgetschedparam.c, posix/src/pthreadjoin.c,
posix/src/pthreadkill.c, posix/src/pthreadsetschedparam.c,
posix/src/ptimer1.c, posix/src/semaphorewaitsupp.c,
posix/src/semclose.c, posix/src/semdestroy.c,
posix/src/semgetvalue.c, posix/src/sempost.c, posix/src/types.c,
rtems/src/msgqtranslatereturncode.c, rtems/src/semobtain.c,
rtems/src/timerfireafter.c, score/include/rtems/system.h,
score/include/rtems/score/corebarrier.h,
score/include/rtems/score/coremsg.h,
score/include/rtems/score/coremutex.h,
score/include/rtems/score/coresem.h: Restructed to move the
OBJECTS_LOCAL case to the top of the switch statement and
eliminate the fall-through return of POSIX_BOTTOM_REACHED. These
changes produced simplier assembly code and allowed for complete
test coverage. Also applied some consistency to the functions
that translate the core status codes to POSIX status codes.
* posix/src/mutextranslatereturncode.c,
posix/src/semaphoretranslatereturncode.c: New files.
* posix/src/mutexfromcorestatus.c: Removed.
* sapi/src/exinit.c, score/include/rtems/score/object.h,
score/include/rtems/score/thread.h, score/src/object.c,
score/src/thread.c: Conditionally compile out more code that is
specific to multiprocessor configurations.
* configure.ac, score/inline/rtems/score/thread.inl,
score/src/threaddispatch.c: Add ability for user to disable inlining
of _Thread_Enable_dispatch. This can save code space but more
importantly it means the binary generated does not have code inlined
that is difficult to test and very seldom executed.
* rtems/src/regioncreate.c, rtems/src/regiondelete.c,
rtems/src/regionextend.c, rtems/src/regiongetfreeinfo.c,
rtems/src/regiongetinfo.c, rtems/src/regiongetsegment.c,
rtems/src/regiongetsegmentsize.c, rtems/src/regionresizesegment.c,
rtems/src/regionreturnsegment.c: Restructed to move the OBJECTS_LOCAL
case to the top of the switch statement, have a single exit with one
call to _RTEMS_Unlock_allocator and eliminate the fall-through return
of RTEMS_INTERNAL_ERROR. These changes produced simplier assembly
code and allowed for complete test coverage.
* libi2c/libi2c.c, libi2c/libi2c.h, libi2c/README_libi2c:
Added checks so that use of 'stdio' is avoided (falling
back to 'printk') before the system is up.
Publish driver entry points so that the libi2c driver could
be added to the applications 'device driver table'.
This is not fully implemented yet, though, since in addition to
initializing libi2c the low-level i2c bus drivers as well
as high-level i2c device drivers need to be registered
with the library.
Updated README_libi2c accordingly.
* libnetworking/rtems/rtems_glue.c: let rtems_bsdnet_ifconfig
(SIOCGIFMEDIA) pass the user parameter down to the ioctl
so that it knows what PHY they want to look at.
* libmisc/shell/shell.c, libmisc/shell/shell.h: Much cleanup but much
of the focus was on the beginning stages of making the login checker
pluggable just like the shell.
* sapi/src/exinit.c, score/Makefile.am,
score/include/rtems/score/apimutex.h: API Mutex calls should never
have been inlined. Inlining them lead to many inlined copies of core
mutex lock. This lead to over 2K savings in the SPARC/ERC32
minimum.exe.
* score/src/apimutex.c, score/src/apimutexallocate.c,
score/src/apimutexlock.c, score/src/apimutexunlock.c: New files.
* score/inline/rtems/score/object.inl: During test coverage analysis,
we identified this sanity check which should have been conditional on
RTEMS_DEBUG since it can NOT be tripped during normal RTEMS
operations. With all APIs enabled, this saved 352 bytes from the
minimum executable on the SPARC/ERC32.
* score/include/rtems/system.h, score/include/rtems/score/interr.h: Add
compiler conditional attribute for methods that do not return. This
avoids gcc generating unreachable code following calls to
_Internal_error_Occurred.
Miscellaneous changes made after a review against the POSIX spec.
* posix/src/pbarrierinit.c, posix/src/prwlockinit.c: If the caller
passes a NULL in the attributes parameter, default attributes are used.
* posix/src/prwlockdestroy.c: If there is at least one thread
waiting, do not allow deletion.
* posix/src/prwlockwrlock.c: Corrected parameter passed to the core
operation used to obtain a RWLock for writing.
* posix/src/pspinlocktranslatereturncode.c,
score/include/rtems/score/corespinlock.h,
score/src/corespinlockrelease.c: If the current thread is not the
holder of the lock, do not allow an unlock and return EPERM.
* score/src/corerwlockobtainwrite.c: Corrected to use the operation
for queueing with a timeout handler.
* score/cpu/sparc/cpu.c, score/cpu/sparc/rtems/score/cpu.h,
score/include/rtems/score/context.h, score/src/threadhandler.c: Fix
stack so gdb backtrace does not print corrupted frame message after
_Thread_Handler. Daniel Hellstrom <daniel@gaisler.com> provided the
SPARC implementation and I made it more general.
* libmisc/cpuuse/cpuusagereport.c, rtems/src/ratemonreportstatistics.c:
Cleaned up reports and fixed a bug related the printf format which
resulted in lack of leading zeroes and misleading magnitude.
* score/src/timespecdivide.c: Fixed bugs related to zero divide case.
* score/Makefile.am, score/include/rtems/score/thread.h,
score/inline/rtems/score/thread.inl: No longer inline _Thread_Get. It
resulted in unnessary code explosion, many uncovered paths when
looking at binary executable coverage, and only optimized getting
self. Id translations were still getting pushed to a subroutine call
to _Objects_Get. Later the non-inlined version can be further
optimized to get Ids in range for the current API, then self, then
look at other APIs.
* score/src/threadget.c: New file.
* libcsupport/src/assoc.c: Removed. Accidentally included routine
also in another file. Mistake after splitting.
* libcsupport/Makefile.am: Reflect file removal.
* libmisc/stackchk/check.c: Eliminate output with little information.
Always print a blown message using the same routine. Now works with
GNAT RTS -fstack-checking if you have patch for the RTEMS specific
support in your GCC version.