summaryrefslogtreecommitdiffstats
path: root/cpukit/posix/include/rtems/posix/spinlockimpl.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* configure: Remove SIZEOF_PTHREAD_SPINLOCK_TSebastian Huber2017-01-131-19/+0
|
* posix: Fix fall back spinlock implementationSebastian Huber2016-12-021-7/+4
| | | | Update #2674.
* posix: Add self-contained pthread spinlockSebastian Huber2016-11-231-43/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Turn pthread_spinlock_t into a self-contained object. On uni-processor configurations, interrupts are disabled in the lock/trylock operations and the previous interrupt status is restored in the corresponding unlock operations. On SMP configurations, a ticket lock is a acquired and released in addition. The self-contained pthread_spinlock_t object is defined by Newlib in <sys/_pthreadtypes.h>. typedef struct { struct _Ticket_lock_Control _lock; __uint32_t _interrupt_state; } pthread_spinlock_t; This implementation is simple and efficient. However, this test case of the Linux Test Project would fail due to call of printf() and sleep() during spin lock ownership: https://github.com/linux-test-project/ltp/blob/master/testcases/open_posix_testsuite/conformance/interfaces/pthread_spin_lock/1-2.c There is only limited support for profiling on SMP configurations. Delete CORE spinlock implementation. Update #2674.
* score: Add Status_Control for all APIsSebastian Huber2016-05-261-14/+0
| | | | | | | | | | | 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: Rename _Objects_Get_local()Sebastian Huber2016-05-201-1/+1
| | | | | | Rename _Objects_Get_local() into _Objects_Get(). Confusions with the previous _Objects_Get() function are avoided since the Objects_Locations parameter is gone.
* score: Optimize _Objects_Get_local()Sebastian Huber2016-05-021-2/+2
| | | | | Make the interrupt lock context the second parameter to avoid register moves.
* score: Optimize _Objects_Get_local()Sebastian Huber2016-04-211-1/+1
| | | | | Make the id the first parameter since usual callers get the object identifier as the first parameter themself.
* 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.
* Optional POSIX Spinlock initializationSebastian Huber2016-02-031-9/+1
| | | | Update #2408.
* Delete unused *_Is_null() functionsSebastian Huber2014-07-261-19/+0
|
* Change all references of rtems.com to rtems.org.Chris Johns2014-03-211-1/+1
|
* score: Create object implementation headerSebastian Huber2013-07-261-0/+1
| | | | | | Move implementation specific parts of object.h and object.inl into new header file objectimpl.h. The object.h contains now only the application visible API.
* score: Create spinlock implementation headerSebastian Huber2013-07-221-0/+1
| | | | | | Move implementation specific parts of corespinlock.h and corespinlock.inl into new header file corespinlockimpl.h. The corespinlock.h contains now only the application visible API.
* posix: Create spinlock implementation headerSebastian Huber2013-07-221-0/+131
Move implementation specific parts of spinlock.h and spinlock.inl into new header file spinlockimpl.h. The spinlock.h contains now only the application visible API.