From c42be504c92d76d2e06d0fc8ebd05fc913376d2d Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 16 Nov 2016 14:50:09 +0100 Subject: posix: Add self-contained pthread spinlock 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 . 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. --- cpukit/score/Makefile.am | 8 -------- 1 file changed, 8 deletions(-) (limited to 'cpukit/score/Makefile.am') diff --git a/cpukit/score/Makefile.am b/cpukit/score/Makefile.am index 02b0bfb260..9b376c3f06 100644 --- a/cpukit/score/Makefile.am +++ b/cpukit/score/Makefile.am @@ -112,8 +112,6 @@ include_rtems_score_HEADERS += include/rtems/score/cpuopts.h include_rtems_score_HEADERS += include/rtems/score/basedefs.h if HAS_PTHREADS -include_rtems_score_HEADERS += include/rtems/score/corespinlock.h -include_rtems_score_HEADERS += include/rtems/score/corespinlockimpl.h include_rtems_score_HEADERS += include/rtems/score/corerwlock.h include_rtems_score_HEADERS += include/rtems/score/corerwlockimpl.h endif @@ -196,12 +194,6 @@ endif ## CORE_SEMAPHORE_C_FILES libscore_a_SOURCES += src/coresem.c -## CORE_SPINLOCK_C_FILES -if HAS_PTHREADS -libscore_a_SOURCES += src/corespinlockrelease.c \ - src/corespinlockwait.c -endif - ## HEAP_C_FILES libscore_a_SOURCES += src/heap.c src/heapallocate.c src/heapextend.c \ src/heapfree.c src/heapsizeofuserarea.c src/heapwalk.c src/heapgetinfo.c \ -- cgit v1.2.3