![]() |
Qt 6.x
The Qt SDK
|
#include "qsemaphore.h"
#include "qfutex_p.h"
#include "qdeadlinetimer.h"
#include "qdatetime.h"
#include "qdebug.h"
#include "qlocking_p.h"
#include "qwaitcondition_p.h"
#include <chrono>
Go to the source code of this file.
Classes | |
struct | QtSemaphorePrivate::Layout1 |
struct | QtSemaphorePrivate::Layout2 |
class | QSemaphorePrivate |
Namespaces | |
namespace | QtSemaphorePrivate |
Typedefs | |
using | QtSemaphorePrivate::Members = std::conditional_t< sizeof(Layout1)<=sizeof(Layout2), Layout1, Layout2 > |
Functions | |
static int | futexAvailCounter (quintptr v) |
static bool | futexNeedsWake (quintptr v) |
static QBasicAtomicInteger< quint32 > * | futexLow32 (QBasicAtomicInteger< quintptr > *ptr) |
static QBasicAtomicInteger< quint32 > * | futexHigh32 (QBasicAtomicInteger< quintptr > *ptr) |
template<bool IsTimed> | |
bool | futexSemaphoreTryAcquire_loop (QBasicAtomicInteger< quintptr > &u, quintptr curValue, quintptr nn, QDeadlineTimer timer) |
template<typename T > | |
bool | futexSemaphoreTryAcquire (QBasicAtomicInteger< quintptr > &u, int n, T timeout) |
Variables | |
static constexpr bool | futexHasWaiterCount = false |
static constexpr quintptr | futexNeedsWakeAllBit |
static constexpr QDeadlineTimer::ForeverConstant | Expired |
|
static |
Definition at line 105 of file qsemaphore.cpp.
References futexHasWaiterCount, and Q_ASSERT.
Referenced by QSemaphore::available(), futexSemaphoreTryAcquire(), and futexSemaphoreTryAcquire_loop().
|
static |
Definition at line 137 of file qsemaphore.cpp.
References futexHasWaiterCount, ptr(), and Q_ASSERT.
Referenced by futexSemaphoreTryAcquire(), futexSemaphoreTryAcquire_loop(), and QSemaphore::release().
|
static |
Definition at line 128 of file qsemaphore.cpp.
References ptr().
Referenced by futexSemaphoreTryAcquire_loop(), and QSemaphore::release().
|
static |
Definition at line 118 of file qsemaphore.cpp.
References futexHasWaiterCount.
Referenced by QSemaphore::release().
bool futexSemaphoreTryAcquire | ( | QBasicAtomicInteger< quintptr > & | u, |
int | n, | ||
T | timeout | ||
) |
Definition at line 195 of file qsemaphore.cpp.
References Expired, QBasicAtomicInteger< T >::fetchAndAddRelaxed(), QBasicAtomicInteger< T >::fetchAndSubRelaxed(), futexAvailCounter(), futexHasWaiterCount, futexHigh32(), QBasicAtomicInteger< T >::loadAcquire(), Q_ASSERT, Q_UINT64_C, qCritical, and QBasicAtomicInteger< T >::testAndSetOrdered().
Referenced by QSemaphore::acquire(), QSemaphore::tryAcquire(), and QSemaphore::tryAcquire().
bool futexSemaphoreTryAcquire_loop | ( | QBasicAtomicInteger< quintptr > & | u, |
quintptr | curValue, | ||
quintptr | nn, | ||
QDeadlineTimer | timer | ||
) |
Definition at line 148 of file qsemaphore.cpp.
References QBasicAtomicInteger< T >::fetchAndOrRelaxed(), futexAvailCounter(), futexHasWaiterCount, futexHigh32(), futexLow32(), futexNeedsWakeAllBit, QtFreeBSDFutex::futexWait(), QBasicAtomicInteger< T >::loadAcquire(), ptr(), Q_ASSERT, QBasicAtomicInteger< T >::testAndSetOrdered(), and timer.
|
staticconstexpr |
Definition at line 191 of file qsemaphore.cpp.
Referenced by futexSemaphoreTryAcquire(), and QSemaphore::tryAcquire().
|
staticconstexpr |
Definition at line 99 of file qsemaphore.cpp.
Referenced by QSemaphore::QSemaphore(), futexAvailCounter(), futexHigh32(), futexNeedsWake(), futexSemaphoreTryAcquire(), futexSemaphoreTryAcquire_loop(), and QSemaphore::release().
|
staticconstexpr |
Definition at line 102 of file qsemaphore.cpp.
Referenced by futexSemaphoreTryAcquire_loop(), and QSemaphore::release().