| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* rtems/include/rtems/rtems/sem.h, rtems/src/semobtain.c:
Changed option set type to rtems_option.
* score/src/objectgetinfo.c: Check return value of
_Objects_API_maximum_class().
* libmisc/monitor/mon-mpci.c, libmisc/monitor/monitor.h,
rtems/include/rtems/rtems/message.h, rtems/src/msgmp.c,
rtems/src/msgqallocate.c, rtems/src/msgqbroadcast.c,
rtems/src/msgqcreate.c, rtems/src/msgqreceive.c, rtems/src/msgqsend.c,
rtems/src/msgqurgent.c, score/include/rtems/score/coremsg.h,
score/include/rtems/score/mpci.h, score/include/rtems/score/thread.h,
score/inline/rtems/score/coremsg.inl, score/src/coremsg.c,
score/src/coremsgbroadcast.c, score/src/coremsgseize.c,
score/src/coremsgsubmit.c:
Removed parameters of _Message_queue_Allocate(). Changed option set
type to rtems_option. Changed type of maximum message and packet size
to size_t. Changed the input buffer type for message send functions to
"const void *". Changed the pointer to the second return argument in
the thread wait information to a union. This union can contain a
pointer to an immutable or a mutable object. This is somewhat fragile.
An alternative would be to add a third pointer for immutable objects,
but this would increase the structure size.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1291/cpukit
* itron/inline/rtems/itron/semaphore.inl, itron/src/twai_sem.c,
posix/include/mqueue.h, posix/include/rtems/posix/mqueue.h,
posix/include/rtems/posix/semaphore.h,
posix/include/rtems/posix/time.h, posix/src/condtimedwait.c,
posix/src/mqueuereceive.c, posix/src/mqueuerecvsupp.c,
posix/src/mqueuesend.c, posix/src/mqueuesendsupp.c,
posix/src/mqueuetimedreceive.c, posix/src/mqueuetimedsend.c,
posix/src/mutextimedlock.c, posix/src/mutextranslatereturncode.c,
posix/src/posixtimespecabsolutetimeout.c,
posix/src/prwlocktimedrdlock.c, posix/src/prwlocktimedwrlock.c,
posix/src/semaphoretranslatereturncode.c,
posix/src/semaphorewaitsupp.c, posix/src/semtimedwait.c,
posix/src/semtrywait.c, posix/src/semwait.c,
posix/src/sigtimedwait.c, posix/src/timersettime.c,
posix/src/ualarm.c, rtems/src/semobtain.c,
rtems/src/semtranslatereturncode.c,
score/include/rtems/score/coremutex.h,
score/include/rtems/score/coresem.h, score/src/coresemseize.c: This
patch addresses issues on implementation of the timeout on the
following POSIX services. Some of these services incorrectly took a
timeout as a relative time. Others would compute a 0 delta to timeout
if the absolute time and the current time were equal and thus
incorrectly block the caller forever. The root of the confusion is
that POSIX specifies that if the timeout is incorrect (e.g. in the
past, is now, or is numerically invalid), that it does not matter if
the call would succeed without blocking. This is in contrast to RTEMS
programming style where all errors are checked before any critical
sections are entered. This fix implemented a more uniform way of
handling POSIX absolute time timeouts.
+ pthread_cond_timedwait - could block forever
+ mq_timedreceive - used relative not absolute time
+ mq_timedsend - used relative not absolute time
+ pthread_mutex_timedlock - used relative not absolute time
+ pthread_rwlock_timedrdlock- used relative not absolute time
+ pthread_rwlock_timedwrlock- used relative not absolute time
+ sem_timedwait - could block forever
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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/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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* itron/src/can_wup.c, itron/src/chg_pri.c, itron/src/del_mbf.c,
itron/src/del_mbx.c, itron/src/del_sem.c, itron/src/del_tsk.c,
itron/src/frsm_tsk.c, itron/src/ref_mbf.c, itron/src/ref_mbx.c,
itron/src/ref_sem.c, itron/src/ref_tsk.c, itron/src/rel_wai.c,
itron/src/rsm_tsk.c, itron/src/sig_sem.c, itron/src/snd_mbx.c,
itron/src/sta_tsk.c, itron/src/sus_tsk.c, itron/src/ter_tsk.c,
itron/src/trcv_mbf.c, itron/src/trcv_mbx.c, itron/src/tsnd_mbf.c,
itron/src/twai_sem.c, posix/src/cancel.c, posix/src/conddestroy.c,
posix/src/condinit.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/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/pbarrierwait.c,
posix/src/prwlockdestroy.c, posix/src/prwlockrdlock.c,
posix/src/prwlocktimedrdlock.c, posix/src/prwlocktimedwrlock.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/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/barrierdelete.c, rtems/src/barrierrelease.c,
rtems/src/barrierwait.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/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, rtems/src/semdelete.c,
rtems/src/semflush.c, rtems/src/semobtain.c, rtems/src/semrelease.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/timerfireafter.c,
rtems/src/timerfirewhen.c, rtems/src/timergetinfo.c,
rtems/src/timerreset.c, rtems/src/timerserverfireafter.c,
rtems/src/timerserverfirewhen.c, sapi/src/extensiondelete.c,
score/include/rtems/score/object.h, score/src/corerwlocktimeout.c,
score/src/mpci.c, score/src/objectgetnameasstring.c,
score/src/threaddelayended.c, score/src/threadqtimeout.c: When
multiprocessing is disabled, do not even allow the constant
OBJECTS_REMOTE to appear in the source. Even at -O2, the presence of
a case OBJECTS_REMOTE in each id->pointer _Objects_Get switch results
in the generation of binary code which can NOT be reached.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* rtems/include/rtems.h,
rtems/include/rtems/rtems/asr.h,
rtems/include/rtems/rtems/attr.h,
rtems/include/rtems/rtems/clock.h,
rtems/include/rtems/rtems/config.h,
rtems/include/rtems/rtems/dpmem.h,
rtems/include/rtems/rtems/eventset.h,
rtems/include/rtems/rtems/message.h,
rtems/include/rtems/rtems/modes.h,
rtems/include/rtems/rtems/msgmp.h,
rtems/include/rtems/rtems/options.h,
rtems/include/rtems/rtems/part.h,
rtems/include/rtems/rtems/ratemon.h,
rtems/include/rtems/rtems/region.h,
rtems/include/rtems/rtems/regionmp.h,
rtems/include/rtems/rtems/sem.h,
rtems/include/rtems/rtems/support.h,
rtems/include/rtems/rtems/taskmp.h,
rtems/include/rtems/rtems/tasks.h,
rtems/include/rtems/rtems/timer.h,
rtems/inline/rtems/rtems/part.inl,
rtems/inline/rtems/rtems/region.inl,
rtems/macros/rtems/rtems/part.inl,
rtems/src/attr.c,
rtems/src/dpmem.c,
rtems/src/dpmemcreate.c,
rtems/src/dpmemexternal2internal.c,
rtems/src/dpmeminternal2external.c,
rtems/src/eventseize.c,
rtems/src/msg.c,
rtems/src/msgmp.c,
rtems/src/msgqallocate.c,
rtems/src/msgqbroadcast.c,
rtems/src/msgqcreate.c,
rtems/src/msgqflush.c,
rtems/src/msgqgetnumberpending.c,
rtems/src/msgqident.c,
rtems/src/msgqreceive.c,
rtems/src/msgqsend.c,
rtems/src/msgqsubmit.c,
rtems/src/msgqtranslatereturncode.c,
rtems/src/msgqurgent.c,
rtems/src/part.c,
rtems/src/partcreate.c,
rtems/src/partident.c,
rtems/src/partmp.c,
rtems/src/ratemon.c,
rtems/src/region.c,
rtems/src/regioncreate.c,
rtems/src/regionextend.c,
rtems/src/regiongetsegment.c,
rtems/src/regiongetsegmentsize.c,
rtems/src/regionmp.c,
rtems/src/regionreturnsegment.c,
rtems/src/rtemstimer.c,
rtems/src/sem.c,
rtems/src/semcreate.c,
rtems/src/semident.c,
rtems/src/semmp.c,
rtems/src/semobtain.c,
rtems/src/semtranslatereturncode.c,
rtems/src/taskcreate.c,
rtems/src/taskgetnote.c,
rtems/src/taskident.c,
rtems/src/taskinitusers.c,
rtems/src/taskmp.c,
rtems/src/taskrestart.c,
rtems/src/tasks.c,
rtems/src/tasksetnote.c,
rtems/src/taskstart.c,
rtems/src/timerserver.c: Convert to using c99 fixed size types.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* include/rtems.h, include/rtems/rtems/asr.h,
include/rtems/rtems/attr.h, include/rtems/rtems/cache.h,
include/rtems/rtems/clock.h, include/rtems/rtems/config.h,
include/rtems/rtems/dpmem.h, include/rtems/rtems/event.h,
include/rtems/rtems/eventmp.h, include/rtems/rtems/eventset.h,
include/rtems/rtems/intr.h, include/rtems/rtems/message.h,
include/rtems/rtems/modes.h, include/rtems/rtems/mp.h,
include/rtems/rtems/msgmp.h, include/rtems/rtems/options.h,
include/rtems/rtems/part.h, include/rtems/rtems/partmp.h,
include/rtems/rtems/ratemon.h, include/rtems/rtems/region.h,
include/rtems/rtems/regionmp.h, include/rtems/rtems/rtemsapi.h,
include/rtems/rtems/sem.h, include/rtems/rtems/semmp.h,
include/rtems/rtems/signal.h, include/rtems/rtems/signalmp.h,
include/rtems/rtems/status.h, include/rtems/rtems/support.h,
include/rtems/rtems/taskmp.h, include/rtems/rtems/tasks.h,
include/rtems/rtems/timer.h, include/rtems/rtems/types.h,
inline/rtems/rtems/asr.inl, inline/rtems/rtems/attr.inl,
inline/rtems/rtems/dpmem.inl, inline/rtems/rtems/event.inl,
inline/rtems/rtems/eventset.inl, inline/rtems/rtems/message.inl,
inline/rtems/rtems/modes.inl, inline/rtems/rtems/options.inl,
inline/rtems/rtems/part.inl, inline/rtems/rtems/ratemon.inl,
inline/rtems/rtems/region.inl, inline/rtems/rtems/sem.inl,
inline/rtems/rtems/status.inl, inline/rtems/rtems/support.inl,
inline/rtems/rtems/tasks.inl, inline/rtems/rtems/timer.inl,
macros/rtems/rtems/asr.inl, macros/rtems/rtems/attr.inl,
macros/rtems/rtems/dpmem.inl, macros/rtems/rtems/event.inl,
macros/rtems/rtems/eventset.inl, macros/rtems/rtems/message.inl,
macros/rtems/rtems/modes.inl, macros/rtems/rtems/options.inl,
macros/rtems/rtems/part.inl, macros/rtems/rtems/ratemon.inl,
macros/rtems/rtems/region.inl, macros/rtems/rtems/sem.inl,
macros/rtems/rtems/status.inl, macros/rtems/rtems/support.inl,
macros/rtems/rtems/tasks.inl, macros/rtems/rtems/timer.inl,
src/attr.c, src/clockget.c, src/clockset.c, src/clocktick.c,
src/dpmem.c, src/dpmemcreate.c, src/dpmemdelete.c,
src/dpmemexternal2internal.c, src/dpmemident.c,
src/dpmeminternal2external.c, src/event.c, src/eventmp.c,
src/eventreceive.c, src/eventseize.c, src/eventsend.c,
src/eventsurrender.c, src/eventtimeout.c, src/intr.c, src/intrbody.c,
src/intrcatch.c, src/mp.c, src/msg.c, src/msgmp.c,
src/msgqallocate.c, src/msgqbroadcast.c, src/msgqcreate.c,
src/msgqdelete.c, src/msgqflush.c, src/msgqgetnumberpending.c,
src/msgqident.c, src/msgqreceive.c, src/msgqsend.c, src/msgqsubmit.c,
src/msgqtranslatereturncode.c, src/msgqurgent.c, src/part.c,
src/partcreate.c, src/partdelete.c, src/partgetbuffer.c,
src/partident.c, src/partmp.c, src/partreturnbuffer.c, src/ratemon.c,
src/ratemoncancel.c, src/ratemoncreate.c, src/ratemondelete.c,
src/ratemongetstatus.c, src/ratemonident.c, src/ratemonperiod.c,
src/ratemontimeout.c, src/region.c, src/regioncreate.c,
src/regiondelete.c, src/regionextend.c, src/regiongetinfo.c,
src/regiongetsegment.c, src/regiongetsegmentsize.c,
src/regionident.c, src/regionmp.c, src/regionreturnsegment.c,
src/rtclock.c, src/rtemsidtoname.c, src/rtemstimer.c, src/sem.c,
src/semcreate.c, src/semdelete.c, src/semflush.c, src/semident.c,
src/semmp.c, src/semobtain.c, src/semrelease.c,
src/semtranslatereturncode.c, src/signal.c, src/signalcatch.c,
src/signalmp.c, src/signalsend.c, src/taskcreate.c, src/taskdelete.c,
src/taskgetnote.c, src/taskident.c, src/taskinitusers.c,
src/taskissuspended.c, src/taskmode.c, src/taskmp.c,
src/taskrestart.c, src/taskresume.c, src/tasks.c, src/tasksetnote.c,
src/tasksetpriority.c, src/taskstart.c, src/tasksuspend.c,
src/taskvariableadd.c, src/taskvariabledelete.c,
src/taskvariableget.c, src/taskwakeafter.c, src/taskwakewhen.c,
src/timercancel.c, src/timercreate.c, src/timerdelete.c,
src/timerfireafter.c, src/timerfirewhen.c, src/timergetinfo.c,
src/timerident.c, src/timerreset.c, src/timerserver.c,
src/timerserverfireafter.c, src/timerserverfirewhen.c: URL for
license changed.
|
|
|
|
|
| |
semaphore/mutex can be obtained immediately, this cuts execution time
by 50%.
|
|
|
|
|
|
|
|
|
|
|
|
| |
power binary/mutex style semaphores already supported by RTEMS. This
was done at the request of Eric Norum <eric@cls.usask.ca> in support
of his effort to port EPICS to RTEMS. This change consisted of
changing the nesting_allowed boolean into a lock_nesting_behavior
enumerated value as well as allowing the core mutex object to optionally
support ensuring that the holder of a binary semaphore released it.
Finally, a more subtle enhancement was to allow the non-holder to release
a priority inheritance/ceiling mutex and still allow the holding task
to return to its original priority.
|
| |
|
|
|