Commit Graph

26350 Commits

Author SHA1 Message Date
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
James Fitzsimons
89aa1ec87d m68k/mrm332: changes required to get the mrm332 bsp working again.
Changed console driver to use interrupts instead of polling.
Change to avoid overwriting CPU32Bug interrupt vector when setting up the Sci interrupt handler.
Fixed type for boolean flag in bsp.h.
Changed mrm332.h to use 25Mhz clock.
Fixes to mrm332.cfg to use correct mcpu32 value for RTEMS_CPU_MODEL instead of m68332 which is no longer supported.
Added -mcpu=cpu32 to compiler options.
Removed broken ROM linker script and replaced broken RAM linker script with working ROM linker script.
Removed no longer required file except_vect_332_ROM.S.
Enabled 0xbeefbeef magic string in start.S to allow MRM version of CPU32Bug to auto run RTEMS.
Removed old code from start.S
Changed compiler optimization flag to optimize for size.
2014-03-26 11:32:52 -04:00
Sebastian Huber
8c26e79867 tests: Produce proper begin/end messages 2014-03-25 16:46:37 +01:00
Sebastian Huber
a75242eb65 tmtests/tmcontext01: Use <rtems/test.h> 2014-03-25 16:46:37 +01:00
Sebastian Huber
1fac361fb9 score: PR2174: Add workaround
Add _Scheduler_FIXME_thread_priority_queues_are_broken to prevent thread
priority queues in case an EDF scheduler is used.
2014-03-25 13:19:26 +01:00
Sebastian Huber
9b44339c14 score: Delete _Watchdog_Report()
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.
2014-03-25 13:19:22 +01:00
Sebastian Huber
e72bc923df sapi: Add profiling report for tests 2014-03-25 13:19:15 +01:00
Sebastian Huber
65612ccb85 sptests/spprintk: Use <rtems/test.h> 2014-03-25 09:47:19 +01:00
Sebastian Huber
5f104eefb1 score: Fix heap protection
Partially revert commit 2a713e3b94.
2014-03-25 08:53:33 +01:00
bjorn larsson
fd46711c54 psxtmtests: Add test.h support 2014-03-25 08:06:37 +01:00