summaryrefslogtreecommitdiffstats
path: root/cpukit/posix/include/rtems (follow)
Commit message (Collapse)AuthorAgeFilesLines
* posix: Fix poradic server initial CPU budgetSebastian Huber2016-06-151-0/+4
| | | | Update #2738.
* posix: Use _POSIX_Threads_Sporadic_timer_insert()Sebastian Huber2016-06-151-1/+14
|
* posix: Remove superfluous codeSebastian Huber2016-06-151-61/+0
| | | | Remove double declarations, useless comments and unused functions.
* score: Add CORE mutex variantsSebastian Huber2016-05-302-6/+62
| | | | | | | | Add CORE_recursive_mutex_Control and CORE_ceiling_mutex_Control to avoid the run-time evaluation of attributes to figure out how a particular mutex methods should behave. Start with the no protocol variants. This eliminates the CORE_MUTEX_DISCIPLINES_FIFO and CORE_MUTEX_DISCIPLINES_PRIORITY disciplines.
* posix: Delete POSIX_Mutex_Protocol::process_sharedSebastian Huber2016-05-301-2/+0
|
* score: Add semaphore variantsSebastian Huber2016-05-301-0/+2
|
* score: _CORE_mutex_Check_dispatch_for_seize()Sebastian Huber2016-05-301-5/+19
| | | | | | | | | | | Move the safety check performed by _CORE_mutex_Check_dispatch_for_seize() out of the performance critical path and generalize it. Blocking on a thread queue with an unexpected thread dispatch disabled level is illegal in all system states. Add the expected thread dispatch disable level (which may be 1 or 2 depending on the operation) to Thread_queue_Context and use it in _Thread_queue_Enqueue_critical().
* score: Add _Thread_queue_Context_set_MP_callout()Sebastian Huber2016-05-303-3/+3
| | | | | | Add _Thread_queue_Context_set_MP_callout() to simplify _Thread_queue_Context_initialize(). This makes it possible to more easily add additional fields to Thread_queue_Context.
* score: Add Status_Control for all APIsSebastian Huber2016-05-267-128/+25
| | | | | | | | | | | 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-257-25/+36
| | | | | | | | 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.
* Replace *_Get_interrupt_disable() with *_Get()Sebastian Huber2016-05-201-1/+1
| | | | | Uniformly use *_Get() to get an object by identifier with a lock context.
* score: Rename _Objects_Get_local()Sebastian Huber2016-05-206-7/+7
| | | | | | Rename _Objects_Get_local() into _Objects_Get(). Confusions with the previous _Objects_Get() function are avoided since the Objects_Locations parameter is gone.
* posix: Add const to _POSIX_Keys_Key_value_find()Sebastian Huber2016-05-201-2/+2
|
* posix: Add and use _POSIX_Get_object_body()Sebastian Huber2016-05-201-0/+32
|
* score: Add per scheduler instance maximum prioritySebastian Huber2016-05-201-1/+1
| | | | | | | | | | | The priority values are only valid within a scheduler instance. Thus, the maximum priority value must be defined per scheduler instance. The first scheduler instance defines PRIORITY_MAXIMUM. This implies that RTEMS_MAXIMUM_PRIORITY and POSIX_SCHEDULER_MAXIMUM_PRIORITY are only valid for threads of the first scheduler instance. Further API/implementation changes are necessary to fix this. Update #2556.
* posix: Rework thread cancellationSebastian Huber2016-05-202-70/+0
| | | | | | | | Add Thread_Life_state::THREAD_LIFE_CHANGE_DEFERRED and rework the POSIX thread cancellation to use the thread life states. Update #2555. Update #2626.
* posix: Rework pthread_join()Sebastian Huber2016-05-202-18/+0
| | | | | | | | | Rework pthread_join() to use _Thread_Join(). Close #2402. Update #2555. Update #2626. Close #2714.
* posix: Avoid Giant lock for some pthread functionsSebastian Huber2016-05-122-19/+0
| | | | | | | | Avoid Giant lock for pthread_getattr_np(), pthread_setschedparam() and pthread_getschedparam(). Replace POSIX threads scheduler lock with thread state lock. Update #2555.
* posix: Make _POSIX_signals_Action_handler() staticSebastian Huber2016-05-121-7/+0
|
* score: Optimize _Objects_Get_local()Sebastian Huber2016-05-025-22/+9
| | | | | Make the interrupt lock context the second parameter to avoid register moves.
* posix: Simplify message queuesSebastian Huber2016-05-023-90/+17
| | | | | | | | | | | | The mq_open() function returns a descriptor to a POSIX message queue object identified by a name. This is similar to sem_open(). In contrast to the POSIX semaphore the POSIX message queues use a separate object for the descriptor. This extra object is superfluous, since the object identifier can be used directly for this purpose, just like for the semaphores. Update #2702. Update #2555.
* posix: Delete POSIX_Message_queue_Control::namedSebastian Huber2016-05-021-1/+0
| | | | Delete unused POSIX_Message_queue_Control::named.
* posix: POSIX_Message_queue_Control::process_sharedSebastian Huber2016-05-021-1/+0
| | | | Delete unused POSIX_Message_queue_Control::process_shared.
* posix: _POSIX_Message_queue_Create_support()Sebastian Huber2016-05-021-14/+0
| | | | | Make _POSIX_Message_queue_Create_support() static since it is only used by mq_open().
* posix: Avoid Giant lock for condition variablesSebastian Huber2016-04-273-18/+47
| | | | Update #2555.
* score: Avoid Giant lock for CORE rwlockSebastian Huber2016-04-221-2/+3
| | | | Update #2555.
* score: Avoid Giant lock for barriersSebastian Huber2016-04-221-17/+7
| | | | | | Use _Thread_queue_Flush_critical() to atomically release the barrier. Update #2555.
* posix: Use _Objects_Get_local() for semaphoresSebastian Huber2016-04-221-7/+4
| | | | | This simplifies the code since the object location is no longer used. Remove superfluous header includes.
* score: Avoid Giant lock for CORE mtx/semSebastian Huber2016-04-221-23/+3
| | | | | | | Avoid Giant lock for CORE mutex and semaphore flush and delete operations. Update #2555.
* score: Optimize _Objects_Get_local()Sebastian Huber2016-04-212-2/+2
| | | | | Make the id the first parameter since usual callers get the object identifier as the first parameter themself.
* score: Optimize _Objects_Get_no_protection()Sebastian Huber2016-04-211-1/+1
| | | | | Make the id the first parameter since usual callers get the object identifier as the first parameter themself.
* posix: Avoid Giant lock for mutexesSebastian Huber2016-04-211-14/+0
| | | | | | | Delete _POSIX_Mutex_Get(). Use _POSIX_Mutex_Get_interrupt_disable() instead. Update #2555.
* posix: Simplify _POSIX_Mutex_Get_interrupt_disableSebastian Huber2016-04-211-7/+7
| | | | Remove superfluous location parameter.
* score: Fix _CORE_semaphore_Flush()Sebastian Huber2016-04-211-1/+0
| | | | | | | Use proper CORE_semaphore_Status for _CORE_semaphore_Flush() and _CORE_semaphore_Destroy() operations. Close #2696.
* posix: Rename killinfo()Sebastian Huber2016-04-121-1/+1
| | | | | | Apparently killinfo() is not defined by POSIX, glibc or FreeBSD. Rename killinfo() to _POSIX_signals_Send() to cleary mark it as an internal function.
* score: Simplify _Objects_Get_no_protection()Sebastian Huber2016-04-121-7/+2
| | | | | | | This functions supports only local objects. Thus, drop the location parameter which was unused by all callers. Remove superfluous includes from Classic Region implementation.
* posix: Use a dedicated lock for scheduler changesSebastian Huber2016-04-122-0/+20
| | | | Update #2555.
* score: Add node map to _RBTree_Find_inline()Sebastian Huber2016-04-061-4/+10
|
* 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
|