| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Move thread state for _Thread_queue_Enqueue() to the thread queue
context. This reduces the parameter count of _Thread_queue_Enqueue()
from five to four (ARM for example has only four function parameter
registers). Since the thread state is used after several function calls
inside _Thread_queue_Enqueue() this parameter was saved on the stack
previously.
|
|
|
|
|
| |
Delete unused _Thread_queue_Enqueue() and rename
_Thread_queue_Enqueue_critical() to _Thread_queue_Enqueue().
|
|
|
|
|
|
|
| |
Replace the expected thread dispatch disable level with a thread queue
enqueue callout. This enables the use of _Thread_Dispatch_direct() in
the thread queue enqueue procedure. This avoids impossible exection
paths, e.g. Per_CPU_Control::dispatch_necessary is always true.
|
|
|
|
| |
Update #2798.
|
|
|
|
|
|
|
|
|
| |
Clock disciplines may be WATCHDOG_RELATIVE, WATCHDOG_ABSOLUTE,
or WATCHDOG_NO_TIMEOUT. A discipline of WATCHDOG_RELATIVE with
a timeout of WATCHDOG_NO_TIMEOUT is equivalent to a discipline
of WATCHDOG_NO_TIMEOUT.
updates #2732
|
|
|
|
|
|
|
|
|
|
|
| |
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().
|
|
|
|
|
|
|
|
|
|
|
| |
Unify the status codes of the Classic and POSIX API to use the new enum
Status_Control. This eliminates the Thread_Control::Wait::timeout_code
field and the timeout parameter of _Thread_queue_Enqueue_critical() and
_MPCI_Send_request_packet(). It gets rid of the status code translation
tables and instead uses simple bit operations to get the status for a
particular API. This enables translation of status code constants at
compile time. Add _Thread_Wait_get_status() to avoid direct access of
thread internal data structures.
|
|
|
|
|
|
|
| |
The _Thread_queue_Enqueue_critical() already deals with thread
dispatching.
Update #2555.
|
|
|
|
|
|
|
|
|
| |
Remove the Thread_queue_Queue::operations field to reduce the size of
this structure. Add a thread queue operations parameter to the
_Thread_queue_First(), _Thread_queue_First_locked(),
_Thread_queue_Enqueue(), _Thread_queue_Dequeue() and
_Thread_queue_Flush() functions. This is a preparation patch to reduce
the size of several synchronization objects.
|
|
|
|
|
|
| |
Rename _POSIX_Absolute_timeout_to_ticks() to
_TOD_Absolute_timeout_to_ticks() and move it to the score directory.
Delete empty <rtems/posix/time.h>.
|
|
|
|
|
|
| |
Separate the thread queue heads and lock from the operations. This
enables the support for light weight objects which only support one
queuing discipline.
|
|
|
|
|
| |
Use a parameter for _Thread_queue_Enqueue() instead to reduce memory
usage.
|
|
|
|
|
|
|
|
|
|
|
| |
Move the complete thread queue enqueue procedure into
_Thread_queue_Enqueue_critical(). It is possible to use the thread
queue lock to protect state of the object embedding the thread queue.
This enables per object fine grained locking in the future.
Delete _Thread_queue_Enter_critical_section().
Update #2273.
|
|
|
|
|
| |
Use a parameter for _Thread_queue_Enqueue() instead to reduce memory
usage.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Add a local context structure to the SMP lock API for acquire and
release pairs. This context can be used to store the ISR level and
profiling information. It may be later used to enable more
sophisticated lock algorithms, e.g. MCS locks.
There is only one lock that cannot be used with a local context. This
is the per-CPU lock since here we would have to transfer the local
context through a context switch which is very complicated.
|
| |
|
|
|
|
|
|
| |
Add and use _POSIX_signals_Release(). The post-switch handler is not
protected by disabled thread dispatching. Use proper SMP lock for
signal management.
|
|
|
|
|
| |
Add thread parameter to _Thread_queue_Enqueue_with_handler() to avoid
access to global _Thread_Executing.
|
|
|
|
|
|
|
|
| |
Move implementation specific parts of tqdata.h, threadq.h and
threadq.inl into new header file threadqimpl.h. The threadq.h contains
now only the application visible API.
Delete tqdata.h.
|
|
|
|
|
|
| |
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/7959229
|
|
|
|
|
| |
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.
|
|
|
|
| |
* posix/src/sigtimedwait.c: Make _POSIX_signals_Get_lowest static.
|
|
|
|
|
|
| |
PR 1630/cpukit
* posix/src/psignalchecksignal.c, posix/src/sigtimedwait.c:
sigtimedwait() was not completely following the POSIX specification.
|
| |
|
|
|
|
|
| |
* posix/src/sigtimedwait.c: Restructure to improve coverage. Improve
comments.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
| |
|
|
|
|
|
|
| |
* src/cancelrun.c, src/pthreadexit.c, src/pthreadjoin.c,
src/sigtimedwait.c: Remove unnecessary typecasts in assignments to
thread->Wait.return_argument.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
*
|
|
|
|
|
|
| |
* Many files: Moved posix/include/rtems/posix/seterr.h to
score/include/rtems/seterr.h so it would be available within
all APIs.
|
| |
|
|
|
|
| |
was pending. Reported by Wayne Bullaughey <wayneb@cacdsp.com>.
|
| |
|
| |
|
|
object code that has to be loaded just for initializing the signal
manager.
|