/arkcompiler/runtime_core/static_core/platforms/unix/libpandabase/futex/ |
H A D | mutex.h | 31 #include <linux/futex.h> 33 namespace ark::os::unix::memory::futex { namespace in ark::os::unix::memory 76 return futex::GetStateAddr(&mutex_); in GetStateAddr() 81 futex::IncrementWaiters(&mutex_); in IncrementWaiters() 86 futex::DecrementWaiters(&mutex_); in DecrementWaiters() 93 return futex::GetWaiters(&mutex_); in GetWaiters() 98 return futex::IsHeld(&mutex_, thread); in IsHeld() 252 futex(GetStateAddr(), FUTEX_WAKE_PRIVATE, WAKE_ALL, nullptr, nullptr, 0); in WakeAllWaiters() 275 futex::ConditionVariableInit(&cond_); in ConditionVariable() 280 futex in ~ConditionVariable() [all...] |
H A D | fmutex.h | 46 #include <linux/futex.h> 47 namespace ark::os::unix::memory::futex { namespace in ark::os::unix::memory 79 // GenMC does not support syscalls(futex) 83 inline int futex(volatile int *uaddr, int op, int val, const struct timespec *timeout, volatile int *uaddr2, int val3) in futex() function 135 } // namespace ark::os::unix::memory::futex
|
H A D | fmutex.cpp | 30 namespace ark::os::unix::memory::futex { namespace in ark::os::unix::memory 39 // GenMC does not support syscalls(futex) 61 // futex() is defined in header, as it is still included in different places 182 if (futex(GetStateAddr(m), FUTEX_WAIT_PRIVATE, curState, nullptr, nullptr, 0) != 0 && (errno != EAGAIN) && in WaitForUnlock() 223 // WaitBrieflyFor failed, go to futex wait in MutexLock() 296 // If we had waiters, we need to do futex call in MutexUnlock() 302 futex(GetStateAddr(m), FUTEX_WAKE_PRIVATE, WAKE_ONE, nullptr, nullptr, 0); in MutexUnlock() 412 if (futex(GetCondAddr(cond), FUTEX_WAIT_PRIVATE, curCond, nullptr, nullptr, 0) != 0) { in Wait() 473 if (futex(GetCondAddr(cond), waitFlag, curCond, &time, nullptr, matchFlag) != 0) { in TimedWait() 513 bool success = futex(GetCondAdd in SignalCount() [all...] |
H A D | mutex.cpp | 28 namespace ark::os::unix::memory::futex { namespace in ark::os::unix::memory 140 if (futex(GetStateAddr(), FUTEX_WAIT_PRIVATE, curState, nullptr, nullptr, 0) != 0) { in FutexWait() 167 // WaitBrieflyFor failed, go to futex wait in WriteLock() 185 if (futex(GetStateAddr(), FUTEX_WAIT_PRIVATE, curState, nullptr, nullptr, 0) != 0) { in WaitForFutex() 196 // WaitBrieflyFor failed, go to futex wait in HandleReadLockWait() 284 } // namespace ark::os::unix::memory::futex
|
/arkcompiler/runtime_core/platforms/unix/libpandabase/futex/ |
H A D | mutex.h | 30 #include <linux/futex.h> 33 namespace panda::os::unix::memory::futex { namespace in panda::os::unix::memory 77 return futex::GetStateAddr(&mutex_); in GetStateAddr() 82 futex::IncrementWaiters(&mutex_); in IncrementWaiters() 87 futex::DecrementWaiters(&mutex_); in DecrementWaiters() 94 return futex::GetWaiters(&mutex_); in GetWaiters() 99 return futex::IsHeld(&mutex_, thread); in IsHeld() 195 futex(GetStateAddr(), FUTEX_WAKE_PRIVATE, WAKE_ALL, nullptr, nullptr, 0); in RELEASE_SHARED() 305 } // namespace panda::os::unix::memory::futex
|
H A D | mutex.cpp | 27 namespace panda::os::unix::memory::futex { namespace in panda::os::unix::memory 149 // WaitBrieflyFor failed, go to futex wait in WriteLock() 156 if (futex(GetStateAddr(), FUTEX_WAIT_PRIVATE, cur_state, nullptr, nullptr, 0) != 0) { in WriteLock() 181 // WaitBrieflyFor failed, go to futex wait in HandleReadLockWait() 186 if (futex(GetStateAddr(), FUTEX_WAIT_PRIVATE, cur_state, nullptr, nullptr, 0) != 0) { in HandleReadLockWait() 271 futex(GetStateAddr(), FUTEX_WAKE_PRIVATE, WAKE_ALL, nullptr, nullptr, 0); in WriteUnlock() 324 if (futex(GetCondAddr(), FUTEX_WAIT_PRIVATE, cur_cond, nullptr, nullptr, 0) != 0) { in Wait() 389 futex_call_res = futex(GetCondAddr(), WAIT_BITSET, cur_cond, &time, nullptr, MATCH_ANY); in TimedWait() 393 futex_call_res = futex(GetCondAddr(), FUTEX_WAIT_PRIVATE, cur_cond, &time, nullptr, 0); in TimedWait() 430 bool success = futex(GetCondAdd in SignalCount() [all...] |
H A D | fmutex.h | 46 #include <linux/futex.h> 48 namespace panda::os::unix::memory::futex { namespace in panda::os::unix::memory 74 // GenMC does not support syscalls(futex) 77 inline int futex(volatile int *uaddr, int op, int val, const struct timespec *timeout, volatile int *uaddr2, int val3) in futex() function 112 } // namespace panda::os::unix::memory::futex
|
H A D | fmutex.cpp | 31 namespace panda::os::unix::memory::futex { namespace in panda::os::unix::memory 40 // GenMC does not support syscalls(futex) 62 // futex() is defined in header, as it is still included in different places 199 // WaitBrieflyFor failed, go to futex wait in MutexLock() 212 if (futex(GetStateAddr(m), FUTEX_WAIT_PRIVATE, curState, nullptr, nullptr, 0) != 0) { in MutexLock() 286 // If we had waiters, we need to do futex call in MutexUnlock() 292 futex(GetStateAddr(m), FUTEX_WAKE_PRIVATE, WAKE_ONE, nullptr, nullptr, 0); in MutexUnlock() 326 } // namespace panda::os::unix::memory::futex
|
/arkcompiler/runtime_core/libpandabase/os/ |
H A D | mutex.h | 20 #include "platforms/unix/libpandabase/futex/mutex.h" 45 using Mutex = panda::os::unix::memory::futex::Mutex; 46 using RecursiveMutex = panda::os::unix::memory::futex::RecursiveMutex; 47 using RWLock = panda::os::unix::memory::futex::RWLock; 48 using ConditionVariable = panda::os::unix::memory::futex::ConditionVariable;
|
/arkcompiler/runtime_core/static_core/libpandabase/tests/ |
H A D | futex_test.cpp | 16 #include "platforms/unix/libpandabase/futex/fmutex.h" 24 struct ark::os::unix::memory::futex::fmutex g_futex; 26 struct ark::os::unix::memory::futex::CondVar g_condvar; 215 SignalCount(&g_condvar, ark::os::unix::memory::futex::WAKE_ONE); in TEST() 263 SignalCount(&g_condvar, ark::os::unix::memory::futex::WAKE_ALL); in TEST()
|
/arkcompiler/runtime_core/static_core/libpandabase/os/ |
H A D | mutex.h | 20 #include "platforms/unix/libpandabase/futex/mutex.h" 59 using Mutex = ark::os::unix::memory::futex::Mutex; 60 using RecursiveMutex = ark::os::unix::memory::futex::RecursiveMutex; 61 using RWLock = ark::os::unix::memory::futex::RWLock; 62 using ConditionVariable = ark::os::unix::memory::futex::ConditionVariable;
|