summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/corebarrierimpl.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Simplify thread queue acquire/releaseSebastian Huber2016-09-081-8/+2
|
* cpukit: Add and use Watchdog_Discipline.Gedare Bloom2016-07-251-5/+0
| | | | | | | | | Clock disciplines may be WATCHDOG_RELATIVE, WATCHDOG_ABSOLUTE, or WATCHDOG_NO_TIMEOUT. A discipline of WATCHDOG_RELATIVE with a timeout of WATCHDOG_NO_TIMEOUT is equivalent to a discipline of WATCHDOG_NO_TIMEOUT. updates #2732
* score: Add Status_Control for all APIsSebastian Huber2016-05-261-38/+4
| | | | | | | | | | | 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: Move thread queue MP callout to contextSebastian Huber2016-05-251-106/+44
| | | | | | | | Drop the multiprocessing (MP) dependent callout parameter from the thread queue extract, dequeue, flush and unblock methods. Merge this parameter with the lock context into new structure Thread_queue_Context. This helps to gets rid of the conditionally compiled method call helpers.
* score: Get rid of mp_id parameterSebastian Huber2016-05-251-13/+0
| | | | | Get rid of the mp_id parameter used for some thread queue methods. Use THREAD_QUEUE_QUEUE_TO_OBJECT() instead.
* mpci: Fix _CORE_barrier_Surrender()Sebastian Huber2016-05-021-1/+1
| | | | Bug introduced by f27383a518836881b7b9b88e88d2e31d5b23d048.
* score: Avoid Giant lock for barriersSebastian Huber2016-04-221-34/+66
| | | | | | Use _Thread_queue_Flush_critical() to atomically release the barrier. Update #2555.
* score: Rename _CORE_barrier_Wait()Sebastian Huber2016-04-211-10/+10
| | | | | | Rename _CORE_barrier_Wait() into _CORE_barrier_Seize(). Rename _CORE_barrier_Release() into _CORE_barrier_Surrender(). This avoids confusion with the ISR lock acquire and release.
* score: Introduce _Thread_queue_Flush_critical()Sebastian Huber2016-04-211-7/+21
| | | | | | | | Replace _Thread_queue_Flush() with _Thread_queue_Flush_critical() and add a filter function for customization of the thread queue flush operation. Update #2555.
* score: Simplify _CORE_barrier_Flush()Sebastian Huber2016-04-211-2/+1
|
* score: Rework MP thread queue callout supportSebastian Huber2016-04-061-25/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The thread queue implementation was heavily reworked to support SMP. This broke the multiprocessing support of the thread queues. This is fixed by this patch. A thread proxy is unblocked due to three reasons 1) timeout, 2) request satisfaction, and 3) extraction. In case 1) no MPCI message must be sent. This is ensured via the _Thread_queue_MP_callout_do_nothing() callout set during _Thread_MP_Allocate_proxy(). In case 2) and 3) an MPCI message must be sent. In case we interrupt the blocking operation during _Thread_queue_Enqueue_critical(), then this message must be sent by the blocking thread. For this the new fields Thread_Proxy_control::thread_queue_callout and Thread_Proxy_control::thread_queue_id are used. Delete the individual API MP callout types and use Thread_queue_MP_callout throughout. This type is only defined in multiprocessing configurations. Prefix the multiprocessing parameters with mp_ to ease code review. Multiprocessing specific parameters are optional due to use of a similar macro pattern. There is no overhead for non-multiprocessing configurations.
* score: _Thread_queue_Flush() parameter changesSebastian Huber2016-04-061-13/+11
| | | | | | | | | | | | Change _Thread_queue_Flush() into a macro that invokes _Thread_queue_Do_flush() with the parameter set defined by RTEMS_MULTIPROCESSING. For multiprocessing configurations add the object identifier to avoid direct use of the thread wait information. Use mp_ prefix for multiprocessing related parameters. Rename Thread_queue_Flush_callout to Thread_queue_MP_callout since this type will be re-used later for other operations as well.
* score: Remove Thread_queue_Queue::operations fieldSebastian Huber2016-03-291-0/+3
| | | | | | | | | Remove the Thread_queue_Queue::operations field to reduce the size of this structure. Add a thread queue operations parameter to the _Thread_queue_First(), _Thread_queue_First_locked(), _Thread_queue_Enqueue(), _Thread_queue_Dequeue() and _Thread_queue_Flush() functions. This is a preparation patch to reduce the size of several synchronization objects.
* score: Add Thread_queue_Control::LockSebastian Huber2015-05-191-0/+8
| | | | | | | | | | | Move the complete thread queue enqueue procedure into _Thread_queue_Enqueue_critical(). It is possible to use the thread queue lock to protect state of the object embedding the thread queue. This enables per object fine grained locking in the future. Delete _Thread_queue_Enter_critical_section(). Update #2273.
* Change all references of rtems.com to rtems.org.Chris Johns2014-03-211-1/+1
|
* score: Include missing <rtems/score/thread.h>Sebastian Huber2013-07-261-0/+1
|
* score: Create threadq implementation headerSebastian Huber2013-07-261-1/+0
| | | | | | | | Move implementation specific parts of tqdata.h, threadq.h and threadq.inl into new header file threadqimpl.h. The threadq.h contains now only the application visible API. Delete tqdata.h.
* score: Avoid direct usage of _Thread_ExecutingSebastian Huber2013-07-221-0/+2
| | | | | | Pass the executing thread as a function parameter. Obtain the executing thread inside a thread dispatch critical section to avoid problems on SMP.
* score: Create barrier implementation headerSebastian Huber2013-07-221-0/+184
Move implementation specific parts of corebarrier.h and corebarrier.inl into new header file corebarrierimpl.h. The corebarrier.h contains now only the application visible API.