Commit Graph

26235 Commits

Author SHA1 Message Date
Joel Sherrill
69d7279bd5 pthreadimpl.h: Conditionalize thread affinity copying 2014-04-03 17:02:40 -05:00
Joel Sherrill
aa7ff5d3f9 leon2 ckinit.c, console.c: Comment clean up 2014-04-03 15:16:07 -05:00
Joel Sherrill
fcc1076195 leon2/Makefile.am: Change to one file per line 2014-04-03 15:16:07 -05:00
Joel Sherrill
68a647045b erc32/Makefile.am: Change to one file per line 2014-04-03 15:16:07 -05:00
Joel Sherrill
6c0b7b878c psim/console/console-io.c: Comment clean up 2014-04-03 15:16:07 -05:00
Joel Sherrill
d4db719346 sim68000/console/conscfg.c: Comment clean up 2014-04-03 15:16:07 -05:00
Joel Sherrill
3a422f7d66 h8sim/console/console-io.c: Comment clean up 2014-04-03 15:16:07 -05:00
Joel Sherrill
68c156aea7 pthreadcreate.c: Fix bug where attr used instead of the_attr 2014-04-03 15:03:42 -05:00
Joel Sherrill
a0a073d1c9 pthread.c: Conditionalize thread affinity initialization 2014-04-03 13:51:47 -05:00
Jennifer Averett
af53e6cffa smpaffinity01: Use Priority Affinity SMP scheduler. 2014-04-03 10:48:58 -05:00
Jennifer Averett
d4e1ead87d smppsxaffinity01: Use Priority Affinity SMP scheduler. 2014-04-03 10:48:57 -05:00
Jennifer Averett
cb283959ce smppsxaffinity02: Use Priority Affinity SMP scheduler. 2014-04-03 10:48:57 -05:00
Jennifer Averett
e045fb6c60 posix: Move affinity from thread to scheduler. 2014-04-03 10:48:57 -05:00
Jennifer Averett
7205189ce3 posix: Modified pthread init to use cpuset default. 2014-04-03 10:48:57 -05:00
Jennifer Averett
54f345f5a5 rtems: Move affinity from thread to scheduler. 2014-04-03 10:48:57 -05:00
Jennifer Averett
6d24e8bc6f sapi: Add priority affinity smp scheduler. 2014-04-03 10:48:56 -05:00
Jennifer Averett
da5b1b9f4c score: Remove affinity element from thread. 2014-04-03 10:48:56 -05:00
Jennifer Averett
56c396ba47 score: Add priority affinity smp scheduler. 2014-04-03 10:48:56 -05:00
Jennifer Averett
cfe457f9a6 score: score: Add get/set affinity to Scheduler Framework. 2014-04-03 10:46:24 -05:00
Sebastian Huber
1a6093dc60 samples/fileio: Fix configuration 2014-04-03 12:53:24 +02:00
Sebastian Huber
494c2e3002 score: Move priority bit map to scheduler instance
Delete global variables _Priority_Major_bit_map and _Priority_Bit_map.
This makes it possible to use multiple priority scheduler instances for
example with clustered/partitioned scheduling on SMP.
2014-04-03 11:13:26 +02:00
Sebastian Huber
f570b07199 score: Rename Priority_bit_map_Control
Rename Priority_bit_map_Control in Priority_bit_map_Word.
2014-04-03 11:13:26 +02:00
Sebastian Huber
3f5f2ce229 score: PR788: Add INTERNAL_ERROR_RESOURCE_IN_USE
Issue a fatal error in case a thread is deleted which still owns
resources (e.g. a binary semaphore with priority inheritance or ceiling
protocol).  The resource count must be checked quite late since RTEMS
task variable destructors, POSIX key destructors, POSIX cleanup handler,
the Newlib thread termination extension or other thread termination
extensions may release resources.  In this context it would be quite
difficult to return an error status to the caller.

An alternative would be to place threads with a non-zero resource count
not on the zombie chain.  Thus we have a resource leak instead of a
fatal error.  The terminator thread can see this error if we return an
RTEMS_RESOURCE_IN_USE status for the rtems_task_delete() for example.
2014-04-03 11:13:25 +02:00
Sebastian Huber
499492793b score: Move __log2table to separate file 2014-04-01 14:10:23 +02:00
Sebastian Huber
8e980e6168 bsps/powerpc: Fix linker command files 2014-04-01 14:10:23 +02:00
Sebastian Huber
10b0c3f9d3 bsps/powerpc: PR757: Fix PPC_IRQ_TRACE for ppc601
We could probably also remove the ppc601 support entirely.
2014-04-01 14:10:23 +02:00
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