summaryrefslogtreecommitdiffstats
path: root/cpukit/posix/include/rtems (follow)
Commit message (Collapse)AuthorAgeFilesLines
* posix: Make _POSIX_signals_Check_signal() staticSebastian Huber2016-04-061-9/+0
|
* score: Rework MP thread queue callout supportSebastian Huber2016-04-061-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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: Delete Thread_Wait_information::idSebastian Huber2016-04-064-4/+4
| | | | | | | | | | | 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: Add and use _RBTree_Insert_inline()Sebastian Huber2016-04-011-22/+4
|
* score: Add and use _RBTree_Find_inline()Sebastian Huber2016-04-011-22/+32
|
* score: Remove Thread_queue_Queue::operations fieldSebastian Huber2016-03-293-0/+16
| | | | | | | | | 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: Avoid Giant lock for CORE spinlockSebastian Huber2016-03-181-17/+10
| | | | | | Use an ISR lock to protect the spinlock state. Remove empty attributes. Update #2555.
* score: Add _Objects_Get_by_name()Sebastian Huber2016-03-183-39/+33
| | | | | | | | | | Replace _Objects_Name_to_id_string() with _Objects_Get_by_name() since all users of this function are interested in the object itself and not the identifier. Use the object allocator lock to protect the search. Update #2555.
* posix: Use per-thread lookup tree for POSIX KeysSebastian Huber2016-03-182-88/+94
| | | | | | Yields higher performance on SMP systems. Close #2625.
* score: Add and use _Objects_Get_local()Sebastian Huber2016-03-141-3/+1
| | | | | | This simplifies the handling with local-only objects. Update #2555.
* score: Replace watchdog handler implementationSebastian Huber2016-03-043-25/+36
| | | | | | | | | Use a red-black tree instead of delta chains. Close #2344. Update #2554. Update #2555. Close #2606.
* Delete unused API extensionsSebastian Huber2016-02-031-1/+0
|
* Use linker set for POSIX User Threads initSebastian Huber2016-02-031-9/+0
| | | | Update #2408.
* posix: Delete empty _POSIX_API_Initialize()Sebastian Huber2016-02-031-8/+0
|
* Optional POSIX Keys initializationSebastian Huber2016-02-031-25/+2
| | | | Update #2408.
* Optional POSIX Spinlock initializationSebastian Huber2016-02-031-9/+1
| | | | Update #2408.
* Optional POSIX RWLock initializationSebastian Huber2016-02-031-9/+1
| | | | Update #2408.
* Optional POSIX Barrier initializationSebastian Huber2016-02-031-9/+1
| | | | Update #2408.
* Optional POSIX Timer initializationSebastian Huber2016-02-032-15/+1
| | | | Update #2408.
* Optional POSIX Semaphore initializationSebastian Huber2016-02-031-8/+1
| | | | Update #2408.
* Optional POSIX Message Queue initializationSebastian Huber2016-02-031-21/+2
| | | | Update #2408.
* Optional POSIX Mutex initializationSebastian Huber2016-02-031-9/+2
| | | | Update #2408.
* Optional POSIX Condition Variable initializationSebastian Huber2016-02-031-8/+1
| | | | Update #2408.
* Optional POSIX Cleanup initializationSebastian Huber2016-02-032-17/+0
| | | | Update #2408.
* Optional POSIX Threads initializationSebastian Huber2016-02-031-8/+1
| | | | Update #2408.
* Optional POSIX Signals initializationSebastian Huber2016-02-031-5/+0
| | | | Update #2408.
* posix: Store unblocked signalsSebastian Huber2015-12-151-2/+2
| | | | | Store the unblock signals to exploit the zero-initialization of the thread control block.
* posix: Require struct _pthread_cleanup_contextSebastian Huber2015-11-242-20/+0
| | | | | This structure is available in Newlib since 2013-11-29 (Git commit a534dfd26e765047621acd0eda656ded886e7108).
* various .h files: Add missing C++ extern wrappersMartin Galvan2015-09-031-1/+4
| | | | Updates #2405.
* score: Rename _POSIX_Absolute_timeout_to_ticks()Sebastian Huber2015-07-281-72/+0
| | | | | | Rename _POSIX_Absolute_timeout_to_ticks() to _TOD_Absolute_timeout_to_ticks() and move it to the score directory. Delete empty <rtems/posix/time.h>.
* score: Introduce Thread_queue_HeadsSebastian Huber2015-07-231-3/+3
| | | | | | | | | | | | | Move the storage for the thread queue heads to the threads. Each thread provides a set of thread queue heads allocated from a dedicated memory pool. In case a thread blocks on a queue, then it lends its heads to the queue. In case the thread unblocks, then it takes a free set of threads from the queue. Since a thread can block on at most one queue this works. This mechanism is used in FreeBSD. The motivation for this change is to reduce the memory demands of the synchronization objects. On a 32-bit uni-processor configuration the Thread_queue_Control size is now 8 bytes, compared to 64 bytes in RTEMS 4.10 (other changes reduced the size as well).
* score: Freechain handler API changesSebastian Huber2015-07-011-5/+1
| | | | | Replace the extend function with an allocator since this fits better to the current use case.
* score: Simplify <rtems/score/thread.h>Sebastian Huber2015-06-251-0/+1
| | | | | | Avoid Thread_Control typedef in <rtems/score/percpu.h>. This helps to get rid of the <rtems/score/percpu.h> include in <rtems/score/thread.h> which exposes a lot of implementation details.
* score: Fine grained locking for semaphoresSebastian Huber2015-05-191-0/+14
| | | | Update #2273.
* score: Fine grained locking for message queuesSebastian Huber2015-05-191-0/+15
| | | | | | | | | | | Aggregate several critical sections into a bigger one. Sending and receiving messages is now protected by an ISR lock. Thread dispatching is only disabled in case a blocking operation is necessary. The message copy procedure is done inside the critical section (interrupts disabled). Thus this change may have a negative impact on the interrupt latency in case very large messages are transferred. Update #2273.
* score: Add Thread_queue_Control::LockSebastian Huber2015-05-196-5/+9
| | | | | | | | | | | 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.
* score: _Objects_Get_isr_disable()Sebastian Huber2015-04-211-1/+1
| | | | | | | Use ISR_lock_Context instead of ISR_Level to allow use of ISR locks for low-level locking. Update #2273.
* posix: Delete unused _POSIX_Threads_Get()Sebastian Huber2014-12-181-34/+0
| | | | Close #1759.
* posix: Delete key/value if value is set to NULLSebastian Huber2014-12-121-0/+13
|
* posix: Simplify _POSIX_Keys_Find()Sebastian Huber2014-12-121-6/+7
|
* posix: Add auto initializaton for rwlockSebastian Huber2014-10-081-21/+3
|
* posix: Use RTEMS_DECONST()Sebastian Huber2014-09-081-1/+1
|
* posix: Simplify key implementationSebastian Huber2014-08-052-10/+27
|
* rbtree: Add and use RBTree_Compare_resultSebastian Huber2014-08-051-1/+1
|
* Add and use RTEMS_CONTAINER_OF()Sebastian Huber2014-08-051-0/+3
|
* Delete unused *_Is_null() functionsSebastian Huber2014-07-268-127/+0
|
* rbtree: Reduce RBTree_Control sizeSebastian Huber2014-07-151-2/+19
| | | | | | | | | | | | Remove compare function and is unique indicator from the control structure. Rename RBTree_Compare_function to RBTree_Compare. Rename rtems_rbtree_compare_function to rtems_rbtree_compare. Provide C++ compatible initializers. Add compare function and is unique indicator to _RBTree_Find(), _RBTree_Insert(), rtems_rbtree_find() and rtems_rbtree_insert(). Remove _RBTree_Is_unique() and rtems_rbtree_is_unique(). Remove compare function and is unique indicator from _RBTree_Initialize_empty() and rtems_rbtree_initialize_empty().
* pthreadimpl.h: Conditionalize thread affinity copyingJoel Sherrill2014-04-031-1/+1
|
* score: PR2152: Use allocator mutex for objectsSebastian Huber2014-03-312-26/+8
| | | | | Use allocator mutex for objects allocate/free. This prevents that the thread dispatch latency depends on the workspace/heap fragmentation.
* score: Thread life cycle re-implementationSebastian Huber2014-03-311-1/+3
| | | | | | | | | | | | | | | | | | | 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.