Sebastian Huber
3ccfd98bc1
libtests/newlib01: New test
2014-04-01 14:10:22 +02:00
Sebastian Huber
57db5f13fb
smptests/smpthreadlife01: Avoid bad profiling stat
2014-04-01 14:10:22 +02:00
Sebastian Huber
25a978354c
ringbuf: Fix ISR lock initialization/destruction
2014-04-01 14:10:22 +02:00
Sebastian Huber
91e7b0c5ae
score: PR2172: _Thread_queue_Extract()
...
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.
2014-04-01 14:10:22 +02:00
Sebastian Huber
8118b67065
libchip: Avoid __DEVOLATILE()
2014-03-31 18:31:52 +02:00
Sebastian Huber
b9b014ea7e
smptests/smpthreadlife01: Typo
2014-03-31 15:49:35 +02:00
Sebastian Huber
a881ff299e
smptests/smpthreadlife01: Add test cases
2014-03-31 15:46:03 +02:00
Daniel Cederman
1d9818dcb3
LEON3: UT699 and GR712 sleep-mode d-cache fix
...
See errata of respective chip. Some code-cleanup as well.
2014-03-31 13:32:48 +02:00
Sebastian Huber
ab816bcb01
sptests/sptask_err04: Fix broken test
2014-03-31 10:14:43 +02:00
Pavel Pisa
3c21ad7db0
SPI SD-Card: adapt common driver code to block devices core API changes.
2014-03-31 10:14:43 +02:00
Sebastian Huber
600bb68fa1
score: _Thread_queue_Extract_with_proxy()
...
Drop the return status, since it is nowhere used.
2014-03-31 10:14:43 +02:00
Sebastian Huber
03e8928753
score: Delete CORE_mutex_Control::lock
...
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.
2014-03-31 10:14:42 +02:00
Sebastian Huber
b1ce11614b
score: Delete CORE_mutex_Control::holder_id
...
We can use the holder pointer to get the identifier if necessary.
2014-03-31 10:14:42 +02:00
Sebastian Huber
cb8d3e7b8f
score: Delete CORE_mutex_Control::blocked_count
2014-03-31 10:14:42 +02:00
Sebastian Huber
f0b4fd9c2e
score: Do not reset resource count during restart
...
This fixes an integer underflow problem in case resources are released
after a thread restart.
Add new test sptests/spthreadlife01.
2014-03-31 10:14:35 +02:00
Sebastian Huber
23fec9f0e1
score: PR2152: Use allocator mutex for objects
...
Use allocator mutex for objects allocate/free. This prevents that the
thread dispatch latency depends on the workspace/heap fragmentation.
2014-03-31 08:29:44 +02:00
Sebastian Huber
346845730c
score: Use thread life protection for API mutexes
...
This prevents that asynchronous thread deletion can lead to an unusable
allocator or once mutex.
2014-03-31 08:29:43 +02:00
Sebastian Huber
fb7199d3a2
score: Relax Giant lock usage for API mutexes
...
It is no longer necessary to protect the workspace allocations with the
Giant lock due to the thread life cycle re-implementation.
2014-03-31 08:29:43 +02:00
Sebastian Huber
1b1be254e7
score: Thread life cycle re-implementation
...
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.
2014-03-31 08:29:43 +02:00
Sebastian Huber
226c731e7a
score: Replace _Thread_Reset()
...
Replace _Thread_Reset() with _Thread_Start_life_change(). This function
can be later used for the _Thread_Close() implementation.
2014-03-31 08:29:43 +02:00
Sebastian Huber
8690b53c85
score: Add parameter to _Thread_Restart()
...
The executing thread will be later used for a common implementation with
_Thread_Close().
2014-03-31 08:29:43 +02:00
Sebastian Huber
391ad3ee4f
score: Fix thread restart extensions context
...
Run the thread restart extensions in the context of the restarted
thread. Run them with thread dispatching enabled.
2014-03-31 08:29:43 +02:00
Sebastian Huber
084c5cc746
score: Reduce _Thread_Reset() parameters
...
Move thread entry parameters out of _Thread_Reset() to enable
re-usablity of this function.
2014-03-31 08:29:43 +02:00
Sebastian Huber
dcd5e2609b
score: Move _Thread_Reset() and make static
2014-03-31 08:29:43 +02:00
Sebastian Huber
5c731a8348
score: Use thread action for thread restart
...
The thread restart is now supported on SMP. New test
smptests/smpthreadlife01.
2014-03-31 08:29:43 +02:00
Sebastian Huber
8061f568de
score: Delete post-switch API extensions
...
Use thread post-switch actions instead.
2014-03-31 08:29:43 +02:00
Sebastian Huber
fc521e2df6
posix: Use thread action for signals
2014-03-31 08:29:43 +02:00
Sebastian Huber
6fd1bdb7af
rtems: Use thread action for signals
2014-03-31 08:29:42 +02:00
Sebastian Huber
0dd732ddac
score: Add thread actions
...
Thread actions are the building block for efficient implementation of
- Classic signals delivery,
- POSIX signals delivery,
- thread restart notification,
- thread delete notification,
- forced thread migration on SMP configurations, and
- the Multiprocessor Resource Sharing Protocol (MrsP).
2014-03-31 08:29:42 +02:00
Sebastian Huber
a5ac9da307
score: Add and use thread get/set CPU functions
2014-03-31 08:29:42 +02:00
Sebastian Huber
c2225d7356
score: Add _Scheduler_Change_priority_if_higher()
...
Add _Scheduler_Set_priority_if_higher().
2014-03-31 08:29:42 +02:00
Sebastian Huber
298d0fda9d
score: Add _Scheduler_Highest_priority_of_two()
...
Use inline functions instead of macros for
_Scheduler_Is_priority_lower_than() and
_Scheduler_Is_priority_higher_than().
2014-03-31 08:29:42 +02:00
Sebastian Huber
7552e77c96
score: PR2151: _Thread_queue_Extract_with_proxy()
...
Avoid NULL pointer access.
2014-03-31 08:29:42 +02:00
Sebastian Huber
79e2d9b65e
score: Add per-CPU state function
...
Add _Per_CPU_State_wait_for_ready_to_start_multitasking(). Add new
fatal SMP error SMP_FATAL_SHUTDOWN_EARLY.
2014-03-31 08:29:42 +02:00
Sebastian Huber
ecd8c8add2
tests/fatal: Fix test names
2014-03-31 08:29:42 +02:00
Sebastian Huber
d98217ccd1
psxtests/psxconfig01: Fix for POSIX keys config
2014-03-31 08:29:42 +02:00
Sebastian Huber
2c83ac3658
smptests/smpfatal03: Fix end of test output
2014-03-31 08:29:42 +02:00
Sebastian Huber
5a13ef9d71
sptests/sp44: Fix end of test output
2014-03-31 08:29:42 +02:00
Bjorn Larsson
df367faddb
sptests: New tests split from sp09 screen 1 and screen 2.
...
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.
2014-03-28 13:09:06 -05:00
Bjorn Larsson
719c7e55e4
sptask_err03: New test split from sp09 screen 3.
2014-03-28 13:09:06 -05:00
Bjorn Larsson
4327a7b759
spevent_err03: New test split from sp09 screen 4.
2014-03-28 13:09:06 -05:00
Bjorn Larsson
d6f65e40ea
sptests: split sp09 screen 5,6 into spsem_err01, spsem_err02, and sptask_err01.
...
sp09 screen 5 split into spsem_err01, sp09 screen 6 split into
spsem_err02, and sptask_err01.
2014-03-28 13:08:57 -05:00
Bjorn Larsson
a3707d893c
sptests: Split sp09 screens 7,8 into spmsg1_err01 and spmsgq_err02.
...
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.
2014-03-28 12:32:47 -05:00
Bjorn Larsson
abc833bd56
spport_err01: New test split from sp09
...
This test verifies rtems_port_XXX error tests from sp09 screen 9.
2014-03-28 12:32:38 -05:00
Bjorn Larsson
34244b7a74
spsignal_err01: New test split from sp09.
...
This test moves rtems_signal_send error testing from sp09
screen 9 into its own test.
2014-03-28 12:32:29 -05:00
Bjorn Larsson
0cf41e54dc
spintr_err01: New test split from sp09.
...
This test contains the interrupt catch error tests from sp09
screen 9.
2014-03-28 12:32:19 -05:00
Bjorn Larsson
9c88bc6e80
spratemon_err01: New test split from sp09.
2014-03-28 12:32:10 -05:00
Sebastian Huber
0cd2b777eb
samples/base_mp: Include missing header file
2014-03-27 14:52:36 +01:00
Christian Mauderer
5c0c0cf2a6
privateenv: Use POSIX keys instead of task variables.
2014-03-27 14:50:36 +01:00
Christian Mauderer
7d5c27e308
privateenv: Remove sharing of user environment between threads.
2014-03-27 14:50:36 +01:00