summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/threadtimeout.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Add _Thread_Continue()Sebastian Huber2017-10-241-8/+17
| | | | | Update #3117. Update #3182.
* score: Initialize thread queue context earlySebastian Huber2016-12-021-1/+2
| | | | | | | | Initialize thread queue context early preferably outside the critical section. Remove implicit _Thread_queue_Context_initialize() from _Thread_Wait_acquire().
* score: Fix thread queue context initializationSebastian Huber2016-11-281-1/+1
| | | | | Initialize the thread queue context with invalid data in debug configurations to catch missing set up steps.
* score: Rework thread priority managementSebastian Huber2016-09-211-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | Add priority nodes which contribute to the overall thread priority. The actual priority of a thread is now an aggregation of priority nodes. The thread priority aggregation for the home scheduler instance of a thread consists of at least one priority node, which is normally the real priority of the thread. The locking protocols (e.g. priority ceiling and priority inheritance), rate-monotonic period objects and the POSIX sporadic server add, change and remove priority nodes. A thread changes its priority now immediately, e.g. priority changes are not deferred until the thread releases its last resource. Replace the _Thread_Change_priority() function with * _Thread_Priority_perform_actions(), * _Thread_Priority_add(), * _Thread_Priority_remove(), * _Thread_Priority_change(), and * _Thread_Priority_update(). Update #2412. Update #2556.
* score: Turn thread lock into thread wait lockSebastian Huber2016-07-271-20/+10
| | | | | | | | | The _Thread_Lock_acquire() function had a potentially infinite run-time due to the lack of fairness at atomic operations level. Update #2412. Update #2556. Update #2765.
* score: Avoid atomic fences for thread wait flagsSebastian Huber2016-06-301-7/+1
| | | | | The use of atomic fences is brittle and may break due to changes in different areas which is hard to manage.
* score: Add Status_Control for all APIsSebastian Huber2016-05-261-1/+2
| | | | | | | | | | | 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.
* score: Replace watchdog handler implementationSebastian Huber2016-03-041-2/+2
| | | | | | | | | Use a red-black tree instead of delta chains. Close #2344. Update #2554. Update #2555. Close #2606.
* Fix _Assert() statementSebastian Huber2015-11-251-1/+1
|
* score: Fix race condition on SMPSebastian Huber2015-11-121-19/+28
| | | | | | We must ensure that the Thread_Control::Wait information update is visible to the target thread before we update its wait flags, otherwise we may return out of date events or a wrong status.
* score: Use a plain ticket lock for thread locksSebastian Huber2015-07-301-1/+1
| | | | | | This enables external libraries to use thread locks since they are independent of the actual RTEMS build configuration, e.g. profiling enabled or disabled.
* score: New thread queue implementationSebastian Huber2015-05-191-0/+6
| | | | | | | | | Use thread wait flags for synchronization. The enqueue operation is now part of the initial critical section. This is the key change and enables fine grained locking on SMP for objects using a thread queue like semaphores and message queues. Update #2273.
* score: More thread queue operationsSebastian Huber2015-05-191-0/+6
| | | | | | | | | Move thread queue discipline specific operations into Thread_queue_Operations. Use a separate node in the thread control block for the thread queue to make it independent of the scheduler data structures. Update #2273.
* score: Generalize _Event_Timeout()Sebastian Huber2015-05-191-0/+74
Add a thread wait timeout code. Replace _Event_Timeout() with a general purpose _Thread_Timeout() watchdog handler. Update #2273.