| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
Move the safety check performed by
_CORE_mutex_Check_dispatch_for_seize() out of the performance critical
path and generalize it. Blocking on a thread queue with an unexpected
thread dispatch disabled level is illegal in all system states.
Add the expected thread dispatch disable level (which may be 1 or 2
depending on the operation) to Thread_queue_Context and use it in
_Thread_queue_Enqueue_critical().
|
|
|
|
|
| |
Update #2555.
Update #2690.
|
|
|
|
|
|
| |
Apparently killinfo() is not defined by POSIX, glibc or FreeBSD. Rename
killinfo() to _POSIX_signals_Send() to cleary mark it as an internal
function.
|
| |
|
|
|
|
| |
Update #2408.
|
|
|
|
|
| |
Store the unblock signals to exploit the zero-initialization of the
thread control block.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the storage for the thread queue heads to the threads. Each thread
provides a set of thread queue heads allocated from a dedicated memory
pool. In case a thread blocks on a queue, then it lends its heads to
the queue. In case the thread unblocks, then it takes a free set of
threads from the queue. Since a thread can block on at most one queue
this works. This mechanism is used in FreeBSD. The motivation for this
change is to reduce the memory demands of the synchronization objects.
On a 32-bit uni-processor configuration the Thread_queue_Control size is
now 8 bytes, compared to 64 bytes in RTEMS 4.10 (other changes reduced
the size as well).
|
|
|
|
|
|
| |
Separate the thread queue heads and lock from the operations. This
enables the support for light weight objects which only support one
queuing discipline.
|
|
|
|
|
|
|
|
|
| |
Move thread queue discipline specific operations into
Thread_queue_Operations. Use a separate node in the thread control
block for the thread queue to make it independent of the scheduler data
structures.
Update #2273.
|
| |
|
| |
|
|
|
|
|
|
| |
Move implementation specific parts of states.h and states.inl into new
header file statesimpl.h. The states.h contains now only the
application visible API.
|
|
|
|
|
|
| |
Move implementation specific parts of pthread.h and pthread.inl into new
header file pthreadimpl.h. The pthread.h contains now only the
application visible API.
|
| |
|
|
|
|
| |
http://www.google-melange.com/gci/task/view/google/gci2012/8022219
|
| |
|
|
|
|
|
| |
This file contains the parts of <rtems/posix/psignal.h> that are only
necessary for the POSIX API implementation.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Script does what is expected and tries to do it as
smartly as possible.
+ remove occurrences of two blank comment lines
next to each other after Id string line removed.
+ remove entire comment blocks which only exited to
contain CVS Ids
+ If the processing left a blank line at the top of
a file, it was removed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libfs/src/dosfs/fat_file.c, libfs/src/imfs/imfs_debug.c,
libfs/src/imfs/imfs_directory.c, libfs/src/imfs/imfs_getchild.c,
posix/src/killinfo.c, score/inline/rtems/score/schedulerpriority.inl,
score/inline/rtems/score/watchdog.inl, score/src/apiext.c,
score/src/chain.c, score/src/coremsgflushsupp.c,
score/src/coremsginsert.c, score/src/objectshrinkinformation.c,
score/src/schedulerpriorityyield.c,
score/src/threadqdequeuepriority.c,
score/src/threadqenqueuepriority.c,
score/src/threadqextractpriority.c, score/src/threadqfirstfifo.c,
score/src/threadqfirstpriority.c, score/src/threadyieldprocessor.c,
score/src/userextthreadbegin.c, score/src/userextthreadcreate.c,
score/src/userextthreaddelete.c, score/src/userextthreadrestart.c,
score/src/userextthreadstart.c, score/src/userextthreadswitch.c,
score/src/watchdogreportchain.c: Avoid chain API violations.
|
|
|
|
| |
* posix/src/killinfo.c: Ensure interested is non-NULL before using it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1573/cpukit
* configure.ac, posix/src/killinfo.c,
posix/src/psignalclearprocesssignals.c,
posix/src/psignalsetprocesssignals.c,
posix/src/psignalunblockthread.c, posix/src/pthreadcreate.c,
posix/src/pthreadkill.c, posix/src/pthreadsigmask.c,
rtems/src/signalsend.c, rtems/src/taskmode.c, score/Makefile.am,
score/preinstall.am, score/include/rtems/system.h,
score/include/rtems/score/context.h, score/include/rtems/score/isr.h,
score/include/rtems/score/thread.h, score/src/isr.c,
score/src/isrthreaddispatch.c, score/src/thread.c,
score/src/threaddispatch.c, score/src/threadloadenv.c: Add a per cpu
data structure which contains the information required by RTEMS for
each CPU core. This encapsulates information such as thread
executing, heir, idle and dispatch needed.
* score/include/rtems/score/percpu.h, score/src/percpu.c: New files.
|
|
|
|
|
| |
* posix/src/keycreate.c, posix/src/killinfo.c: Remove more ITRON
references.
|
| |
|
|
|
|
|
|
|
|
| |
* 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/src/killinfo.c: Rework to make easier to analyze for code
coverage and to simplify so it is easier to analyze for correctness.
|
|
|
|
| |
* posix/src/killinfo.c: Clean up. Avoid NULL pointer case.
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
| |
* posix/src/killinfo.c: Make easier to map coverage data.
|
| |
|
| |
|
|
|
|
| |
* posix/src/killinfo.c: Clean up and eliminate some dead code paths.
|
|
|
|
|
|
| |
* posix/Makefile.am, posix/src/kill.c, posix/src/killinfo.c: Split file
and resolved copyright information.
* posix/src/kill_r.c: New file.
|
|
|
|
|
|
|
|
|
| |
PR 628/rtems
* posix/src/killinfo.c, posix/src/pthreadkill.c, posix/src/ptimer1.c,
posix/src/sigaction.c, posix/src/sigaddset.c, posix/src/sigsuspend.c:
Signal set of 0 is supposed to return EINVAL. In addition
timer_create needed to return an error if the clock was not
CLOCK_REALTIME.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* posix/include/rtems/posix/cond.h,
posix/include/rtems/posix/intr.h, posix/include/rtems/posix/key.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/include/rtems/posix/threadsup.h,
posix/include/rtems/posix/timer.h, posix/src/cond.c,
posix/src/intr.c, posix/src/key.c, posix/src/keycreate.c,
posix/src/keydelete.c, posix/src/keygetspecific.c,
posix/src/keyrundestructors.c, posix/src/keysetspecific.c,
posix/src/killinfo.c, posix/src/mqueue.c,
posix/src/mqueuerecvsupp.c, posix/src/mqueuesendsupp.c,
posix/src/mqueuetranslatereturncode.c, posix/src/mutex.c,
posix/src/posixintervaltotimespec.c,
posix/src/posixtimespecsubtract.c, posix/src/psignal.c,
posix/src/pthread.c, posix/src/ptimer1.c, posix/src/semaphore.c,
posix/src/sysconf.c: Convert to using c99 fixed size types.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* include/rtems/posix/cond.h, include/rtems/posix/condmp.h,
include/rtems/posix/config.h, include/rtems/posix/intr.h,
include/rtems/posix/key.h, include/rtems/posix/mqueue.h,
include/rtems/posix/mqueuemp.h, include/rtems/posix/mutex.h,
include/rtems/posix/mutexmp.h, include/rtems/posix/posixapi.h,
include/rtems/posix/pthread.h, include/rtems/posix/pthreadmp.h,
include/rtems/posix/ptimer.h, include/rtems/posix/semaphore.h,
include/rtems/posix/semaphoremp.h, inline/rtems/posix/cond.inl,
inline/rtems/posix/intr.inl, inline/rtems/posix/key.inl,
inline/rtems/posix/mqueue.inl, inline/rtems/posix/mutex.inl,
inline/rtems/posix/pthread.inl, inline/rtems/posix/semaphore.inl,
inline/rtems/posix/timer.inl, 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/pthread.inl, macros/rtems/posix/semaphore.inl,
macros/rtems/posix/timer.inl, src/alarm.c, src/kill.c,
src/killinfo.c, src/mqueuetranslatereturncode.c, src/pause.c,
src/pthreadattrdestroy.c, src/pthreadattrgetdetachstate.c,
src/pthreadattrgetinheritsched.c, src/pthreadattrgetschedparam.c,
src/pthreadattrgetschedpolicy.c, src/pthreadattrgetscope.c,
src/pthreadattrgetstackaddr.c, src/pthreadattrgetstacksize.c,
src/pthreadattrinit.c, src/pthreadattrsetdetachstate.c,
src/pthreadattrsetinheritsched.c, src/pthreadattrsetschedparam.c,
src/pthreadattrsetschedpolicy.c, src/pthreadattrsetscope.c,
src/pthreadattrsetstackaddr.c, src/pthreadattrsetstacksize.c,
src/pthreadcreate.c, src/pthreaddetach.c, src/pthreadequal.c,
src/pthreadexit.c, src/pthreadgetcpuclockid.c,
src/pthreadgetcputime.c, src/pthreadgetschedparam.c,
src/pthreadjoin.c, src/pthreadkill.c, src/pthreadonce.c,
src/pthreadself.c, src/pthreadsetcputime.c,
src/pthreadsetschedparam.c, src/pthreadsigmask.c, src/sigaction.c,
src/sigaddset.c, src/sigdelset.c, src/sigemptyset.c,
src/sigfillset.c, src/sigismember.c, src/signal_2.c,
src/sigpending.c, src/sigprocmask.c, src/sigqueue.c,
src/sigsuspend.c, src/sigtimedwait.c, src/sigwait.c,
src/sigwaitinfo.c, src/ualarm.c: URL for license changed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* src/clockgetres.c: Apply rtems_set_errno_and_return_minus_one.
* src/clockgettime.c: Apply rtems_set_errno_and_return_minus_one.
* src/clocksettime.c: Apply rtems_set_errno_and_return_minus_one.
* src/killinfo.c: Apply rtems_set_errno_and_return_minus_one.
* src/mqueueclose.c: Apply rtems_set_errno_and_return_minus_one.
* src/mqueuecreatesupp.c: Apply rtems_set_errno_and_return_minus_one.
* src/mqueuegetattr.c: Apply rtems_set_errno_and_return_minus_one.
* src/mqueuenotify.c: Apply rtems_set_errno_and_return_minus_one.
* src/mqueueopen.c: Apply rtems_set_errno_and_return_minus_one.
* src/mqueuerecvsupp.c: Apply rtems_set_errno_and_return_minus_one.
* src/mqueuesendsupp.c: Apply rtems_set_errno_and_return_minus_one.
* src/mqueuesetattr.c: Apply rtems_set_errno_and_return_minus_one.
* src/mqueueunlink.c: Apply rtems_set_errno_and_return_minus_one.
* src/nanosleep.c: Apply rtems_set_errno_and_return_minus_one.
* src/pthreadkill.c: Apply rtems_set_errno_and_return_minus_one.
* src/pthreadsigmask.c: Apply rtems_set_errno_and_return_minus_one.
* src/ptimer1.c: Apply rtems_set_errno_and_return_minus_one.
* src/sched.c: Apply rtems_set_errno_and_return_minus_one.
* src/semaphorecreatesupp.c: Apply rtems_set_errno_and_return_minus_one.
* src/semaphorewaitsupp.c: Apply rtems_set_errno_and_return_minus_one.
* src/semclose.c: Apply rtems_set_errno_and_return_minus_one.
* src/semdestroy.c: Apply rtems_set_errno_and_return_minus_one.
* src/semgetvalue.c: Apply rtems_set_errno_and_return_minus_one.
* src/seminit.c: Apply rtems_set_errno_and_return_minus_one.
* src/semopen.c: Apply rtems_set_errno_and_return_minus_one.
* src/sempost.c: Apply rtems_set_errno_and_return_minus_one.
* src/semunlink.c: Apply rtems_set_errno_and_return_minus_one.
* src/setpgid.c: Apply rtems_set_errno_and_return_minus_one.
* src/setsid.c: Apply rtems_set_errno_and_return_minus_one.
* src/sigaction.c: Apply rtems_set_errno_and_return_minus_one.
* src/sigaddset.c: Apply rtems_set_errno_and_return_minus_one.
* src/sigdelset.c: Apply rtems_set_errno_and_return_minus_one.
* src/sigemptyset.c: Apply rtems_set_errno_and_return_minus_one.
* src/sigfillset.c: Apply rtems_set_errno_and_return_minus_one.
* src/sigismember.c: Apply rtems_set_errno_and_return_minus_one.
* src/sigpending.c: Apply rtems_set_errno_and_return_minus_one.
* src/sigtimedwait.c: Apply rtems_set_errno_and_return_minus_one.
* src/utsname.c: Apply rtems_set_errno_and_return_minus_one.
|
|
|
|
|
|
|
| |
* configure.in: Add src/config.h
* src/Makefile.am: Add INCLUDES += -I. to pickup config.h
* src/.cvsignore: Add config.h and stamp-h
* src/*.c: Add config.h support.
|
|
|
|
|
|
| |
* Many files: Moved posix/include/rtems/posix/seterr.h to
score/include/rtems/seterr.h so it would be available within
all APIs.
|
| |
|
| |
|
| |
|
|
object code that has to be loaded just for initializing the signal
manager.
|