| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add _Thread_queue_Extract_with_return_code(). On SMP this sequence in
_Thread_queue_Process_timeout() was broken:
[...]
/*
* After we enable interrupts here, a lot may happen in the
* meantime, e.g. nested interrupts may release the resource that
* times out here. So we enter _Thread_queue_Extract()
* speculatively. Inside this function we check the actual status
* under ISR disable protection. This ensures that exactly one
* executing context performs the extract operation (other parties
* may call _Thread_queue_Dequeue()). If this context won, then
* we have a timeout.
*
* We can use the_thread_queue pointer here even if
* the_thread->Wait.queue is already set to NULL since the extract
* operation will only use the thread queue discipline to select
* the right extract operation. The timeout status is set during
* thread queue initialization.
*/
we_did_it = _Thread_queue_Extract( the_thread_queue, the_thread );
if ( we_did_it ) {
the_thread->Wait.return_code = the_thread_queue->timeout_status;
}
[...]
In case _Thread_queue_Extract() successfully extracted a thread, then
this thread may start execution on a remote processor immediately and
read the the_thread->Wait.return_code before we update it here with the
timeout status. Thus it observes a successful operation even if it
timed out.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
The holder field is enough to determine if a mutex is locked or not.
This leads also to better error status codes in case a
rtems_semaphore_release() is done for a mutex without having the
ownership.
|
|
|
|
|
|
|
| |
This fixes an integer underflow problem in case resources are released
after a thread restart.
Add new test sptests/spthreadlife01.
|
|
|
|
|
| |
Use allocator mutex for objects allocate/free. This prevents that the
thread dispatch latency depends on the workspace/heap fragmentation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The thread deletion is now supported on SMP.
This change fixes the following PRs:
PR1814: SMP race condition between stack free and dispatch
PR2035: psxcancel reveals NULL pointer access in _Thread_queue_Extract()
The POSIX cleanup handler are now called in the right context (should be
called in the context of the terminating thread).
http://pubs.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_09.html
Add a user extension the reflects a thread termination event. This is
used to reclaim the Newlib reentrancy structure (may use file
operations), the POSIX cleanup handlers and the POSIX key destructors.
|
|
|
|
|
| |
Run the thread restart extensions in the context of the restarted
thread. Run them with thread dispatching enabled.
|
|
|
|
|
| |
The thread restart is now supported on SMP. New test
smptests/smpthreadlife01.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Split sp09 screen 1 into new test sptask_err04.
Split sp09 screen 2 into new tests sptask__err02 and spclock_err01,
as well as moving one verification into sptimer_err01.
|
| |
|
| |
|
|
|
|
|
| |
sp09 screen 5 split into spsem_err01, sp09 screen 6 split into
spsem_err02, and sptask_err01.
|
|
|
|
|
|
| |
spmsgq_err01 test replaces rtems_message_queue_XXX error tests from
sp09 screen 7. spmsgq_err02 replaces rtems_message_queue_XXX error
tests from sp09 screen 8.
|
|
|
|
| |
This test verifies rtems_port_XXX error tests from sp09 screen 9.
|
|
|
|
|
| |
This test moves rtems_signal_send error testing from sp09
screen 9 into its own test.
|
|
|
|
|
| |
This test contains the interrupt catch error tests from sp09
screen 9.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Delete _Watchdog_Report_chain(). These two functions use printk() with
thread dispatching and interrupts disabled. So they are pretty useless
in real applications. They are not part of the application APIs. They
are only used in one test and do nothing useful in this test.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
With this patch C++ applications now eventually need additional POSIX-keys and
POSIX-key-value-pairs configured.
|
|
|
|
| |
The rtems_gxx_key_dtor function is not longer used by gcc.
|
|
|
|
|
|
|
|
| |
The man-page for pthread_setspecific does not define the EAGAIN return value.
Further without this patch it was not possible to set keys that have been
already set a new value.
Add test for setting a new value to a already set key.
|
|
|
|
|
| |
Add a task producing memory traffic. Add tasks to obtain a priority
inheritance semaphore in a synchronized way.
|
| |
|
|
|
|
| |
Use snprintf() instead of sprintf(). Include missing header files.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use posix keys for current shell environment instead of task variables. With
this patch the shell needs one posix-key and one posix-key-value-pair
configured.
Update documentation for the shell.
Adapt samples/fileio:
- Add necessary objects.
- Add login function and custom device name for better testing of the shell.
|
| |
|
|
|
|
| |
Fix file system names. Remove superfluous defines.
|
| |
|
| |
|
|
|
|
|
|
| |
Enable pthread_once() for all configurations. The pthread_once()
function is one means to initialize POSIX keys. Another use case is the
C++ support.
|
| |
|