summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Rework MP thread queue callout supportSebastian Huber2016-04-066-61/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-066-31/+23
| | | | | | | | | | | | 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: Delete Thread_Wait_information::idSebastian Huber2016-04-064-4/+20
| | | | | | | | | | | This field was only by the monitor in non-multiprocessing configurations. Add new field Thread_Wait_information::remote_id in multiprocessing configurations and use it for the remote procedure call thread queue. Add _Thread_Wait_get_id() to obtain the object identifier for debug and system information tools. Ensure the object layout via static asserts. Add test cases to sptests/spthreadq01.
* score: Objects_Thread_queue_Extract_calloutSebastian Huber2016-03-304-16/+12
| | | | | Change parameters of the objects thread queue extract callout to avoid a cast and explicit use of the thread wait information.
* score: Fix set but not used warningSebastian Huber2016-03-301-3/+1
|
* score: Fix statement with no effect warningSebastian Huber2016-03-301-9/+6
| | | | | No need to add an assert due to the fatal error parameter passed to _Objects_MP_Allocate_and_open().
* score: Fix statement with no effect warningSebastian Huber2016-03-301-9/+6
| | | | | No need to add an assert due to the fatal error parameter passed to _Objects_MP_Allocate_and_open().
* score: Fix statement with no effect warningSebastian Huber2016-03-301-9/+6
| | | | | No need to add an assert due to the fatal error parameter passed to _Objects_MP_Allocate_and_open().
* score: Fix statement with no effect warningSebastian Huber2016-03-301-9/+6
| | | | | No need to add an assert due to the fatal error parameter passed to _Objects_MP_Allocate_and_open().
* score: Fix set but not used warningSebastian Huber2016-03-301-9/+6
| | | | | No need to add an assert due to the fatal error parameter passed to _Objects_MP_Allocate_and_open().
* score: Fix set but not used warningSebastian Huber2016-03-301-4/+1
|
* score: Use constant for maximum count of CORE semaSebastian Huber2016-03-291-1/+0
|
* score: Remove Thread_queue_Queue::operations fieldSebastian Huber2016-03-295-19/+21
| | | | | | | | | 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.
* cpukit/rtems/src/*mp.c: Fix set but not used warningJoel Sherrill2016-03-246-2/+13
|
* rtems: Use object allocator lockSebastian Huber2016-03-221-14/+4
| | | | | | | Object creation and destruction is protected by the object allocator lock and not disabled thread dispatching. Update #2555.
* rtems: Rework rate-monotonic schedulerSebastian Huber2016-03-227-330/+356
| | | | | | | | | | Use the default thread lock to protect rate-monotonic state changes. This avoids use of the Giant lock. Split rtems_rate_monotonic_period() body into several static functions. Introduce a new thread wait class THREAD_WAIT_CLASS_PERIOD for period objects to synchronize the blocking operation. Close #2631.
* rtems: Avoid __RTEMS_USE_TICKS_FOR_STATISTICS__Sebastian Huber2016-03-211-35/+10
| | | | Option was removed by e6b31b27fbe3cd76534db2d4fc4ef5dcdf0d33b4.
* rtems: Delete Rate_monotonic_Period_time_tSebastian Huber2016-03-212-12/+12
| | | | Variables with this type directly used the _Timestamp_*() functions.
* rtems: Avoid Giant lock in rtems_signal_catch()Sebastian Huber2016-03-171-5/+6
| | | | Update #2555.
* rtems: Avoid Giant lock in rtems_task_mode()Sebastian Huber2016-03-171-3/+4
| | | | Update #2555.
* score: Fix CPU time used by executing threadsSebastian Huber2016-03-171-55/+20
| | | | | | | | | | | | | | The CPU time used of a thread was previously maintained per-processor mostly during _Thread_Dispatch(). However, on SMP configurations the actual processor of a thread is difficult to figure out since thread dispatching is a highly asynchronous process (e.g. via inter-processor interrupts). Only the intended processor of a thread is known to the scheduler easily. Do the CPU usage accounting during thread heir updates in the context of the scheduler operations. Provide the function _Thread_Get_CPU_time_used() to get the CPU usage of a thread using proper locks to get a consistent value. Close #2627.
* score: Add and use _Objects_Get_local()Sebastian Huber2016-03-145-155/+92
| | | | | | This simplifies the handling with local-only objects. Update #2555.
* score: Replace watchdog handler implementationSebastian Huber2016-03-0419-678/+387
| | | | | | | | | Use a red-black tree instead of delta chains. Close #2344. Update #2554. Update #2555. Close #2606.
* score: Delete Thread_CPU_usage_tSebastian Huber2016-03-012-5/+5
| | | | | This type is superfluous since all operations with it are done via the _Timestamp_*() functions.
* rtems: Avoid __RTEMS_USE_TICKS_FOR_STATISTICS__Sebastian Huber2016-02-251-30/+16
| | | | Option was removed by e6b31b27fbe3cd76534db2d4fc4ef5dcdf0d33b4.
* score: Simplify _Watchdog_Tick()Sebastian Huber2016-02-171-0/+5
| | | | | | | Move thread dispatch disable check to legacy rtems_clock_tick(). Assert that thread dispatching is disabled in _Watchdog_Tick(). This is usually the case, since this function is called in interrupt context by the clock tick service routine.
* Delete unused API extensionsSebastian Huber2016-02-033-3/+0
|
* Use linker set for Classic User Tasks initSebastian Huber2016-02-031-16/+0
| | | | Update #2408.
* Optional POSIX Keys initializationSebastian Huber2016-02-031-6/+0
| | | | Update #2408.
* rtems: Delete empty _RTEMS_API_Initialize()Sebastian Huber2016-02-031-1/+0
|
* Optional Classic Barrier initializationSebastian Huber2016-02-032-27/+10
| | | | Update #2408.
* Optional Classic Rate Monotonic initializationSebastian Huber2016-02-032-27/+10
| | | | Update #2408.
* Optional Classic Dual-Ported Memory initializationSebastian Huber2016-02-032-27/+10
| | | | Update #2408.
* Optional Classic Region initializationSebastian Huber2016-02-032-27/+10
| | | | Update #2408.
* Optional Classic Partition initializationSebastian Huber2016-02-032-27/+10
| | | | Update #2408.
* Optional Classic Semaphore initializationSebastian Huber2016-02-032-30/+9
| | | | Update #2408.
* Optional Classic Message Queue initializationSebastian Huber2016-02-032-31/+10
| | | | Update #2408.
* Optional Classic Event initializationSebastian Huber2016-02-032-32/+14
| | | | Update #2408.
* Optional Classic Signal initializationSebastian Huber2016-02-032-45/+17
| | | | Update #2408.
* Optional Classic Timer initializationSebastian Huber2016-02-032-33/+12
| | | | Update #2408.
* Optional Classic Tasks initializationSebastian Huber2016-02-032-26/+10
| | | | Update #2408.
* score: Fix simple timecounter supportSebastian Huber2016-01-191-1/+5
| | | | Update #2502.
* taskcreate.c: Add method name to comment to be clearerJoel Sherrill2016-01-181-9/+4
|
* score: Simplify _Thread_Start()Sebastian Huber2016-01-111-1/+1
|
* score: Introduce Thread_Entry_informationSebastian Huber2016-01-113-14/+22
| | | | | | | This avoids potential dead code in _Thread_Handler(). It gets rid of the dangerous function pointer casts. Update #2514.
* rtems: Fix warningSebastian Huber2016-01-081-1/+0
|
* score: Avoid dead code in global constructionSebastian Huber2016-01-081-1/+10
| | | | Update #2514.
* score: Add fatal errors for NULL entry init tasksSebastian Huber2016-01-081-3/+11
| | | | | | This simplifies the global construction. Update #2514.
* api: Remove deprecated NotepadsAun-Ali Zaidi2015-12-246-247/+4
| | | | | | | | | | | | | | | | | | | | | | | Notepads where a feature of RTEMS' tasks that simply functioned in the same way as POSIX keys or threaded local storage (TLS). They were introduced well before per task variables, which are also deprecated, and were barely used in favor of their POSIX alternatives. In addition to their scarce usage, Notepads took up unnecessary memory. For each task: - 16 32-bit integers were allocated. - A total of 64 bytes per task per thread. This is especially critical in low memory and safety-critical applications. They are also defined as uint32_t, and therefore are not guaranteed to hold a pointer. Lastly, they are not portable solutions for SMP and uniprocessor systems, like POSIX keys and TLS. updates #2493.
* rtems: Delete empty functionSebastian Huber2015-12-151-4/+0
|