A singleton global mutex is locked before every operation, ensuring safety, at the potential expense of performance.
Definition in file Atomic-mutex.h.
#include "../debug/DebugUtils.h"
#include "../util/Singleton.h"
Go to the source code of this file.
Namespaces | |
namespace | oasys |
Classes | |
struct | oasys::atomic_t |
The definition of atomic_t for arm requires a second word used for the lock, since the only instruction we have to rely on is SWP. More... | |
Functions | |
Mutex * | oasys::atomic_mutex () |
Global accessor to the singleton atomic mutex. | |
static u_int32_t | oasys::atomic_cmpxchg32 (volatile atomic_t *v, u_int32_t o, u_int32_t n) |
Atomic compare and set. | |
static u_int32_t | oasys::atomic_add_ret (volatile atomic_t *v, u_int32_t i) |
Atomic addition function. | |
static void | oasys::atomic_add (volatile atomic_t *v, u_int32_t i) |
Wrapper variants around the basic add/sub functions above. | |
static void | oasys::atomic_sub (volatile atomic_t *v, u_int32_t i) |
Atomic subtraction function. | |
static void | oasys::atomic_incr (volatile atomic_t *v) |
Atomic increment. | |
static void | oasys::atomic_decr (volatile atomic_t *v) |
Atomic decrement. | |
static bool | oasys::atomic_decr_test (volatile atomic_t *v) |
Atomic decrement and test. | |
static u_int32_t | oasys::atomic_incr_ret (volatile atomic_t *v) |
Atomic increment function that returns the new value. |