summaryrefslogtreecommitdiffstats
path: root/cpukit/posix/include (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* posix: Generalize _POSIX_Priority_To_core()Sebastian Huber2016-06-221-6/+10
| | | | Move POSIX API priority validation into _POSIX_Priority_To_core().
* posix: Make POSIX API aware of scheduler instancesSebastian Huber2016-06-221-57/+28
|
* posix: Rework sporadic server scheduling policySebastian Huber2016-06-222-22/+21
| | | | | | | | | | | | | | Instead of lowering the priority in case the initial budget is consumed raise the priority for each new period. Restore the normal priority once the initial budget is consumed. This makes it later easier to combine the high priority phase with temporary priority boosts (e.g. via priority ceiling and inheritance). Use the thread lock to protect the POSIX thread attributes instead of the thread state lock. This makes it easier to change the thread priority and keep the POSIX attributes consistent. Fixes a false positive use of uninitialized variable warning.
* posix: Delete POSIX_API_Control::schedparamSebastian Huber2016-06-221-2/+2
| | | | This field was redundant.
* posix: Delete POSIX_API_Control::schedpolicySebastian Huber2016-06-221-2/+0
| | | | This field was redundant.
* posix: Delete POSIX_API_Control::ss_high_prioritySebastian Huber2016-06-221-5/+0
| | | | This field was unused.
* posix: _POSIX_Mutex_Default_attributesSebastian Huber2016-06-222-1/+11
| | | | | | Make _POSIX_Mutex_Default_attributes constant and independent of the scheduler instance. Use INT_MAX to indicate the default ceiling priority.
* 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
|