Go to the source code of this file.
Data Structures | |
struct | _ppcatomicstate |
struct | _ppcatomicq |
Typedefs | |
typedef void * | PPCAtomicQueueElement |
typedef struct _ppcatomicstate | PPCAtomicState |
typedef struct _ppcatomicq | PPCAtomicQueue |
Functions | |
void | PPC_AtomicCounterAllocate (void **atomic_mem, size_t atomic_memsize) |
ppc_atomic_type_t | PPC_AtomicLoadIncrementBounded (volatile ppc_atomic_t *counter) |
void | PPC_AtomicStore (volatile ppc_atomic_t *counter, ppc_atomic_type_t val) |
void | PPC_AtomicReadFence () |
void | PPC_AtomicWriteFence () |
void | PPCAtomicQueueInit (void *atomic_mem, size_t atomic_memsize, PPCAtomicQueue *queue, int use_overflow, int nelem) |
int | PPCAtomicEnqueue (PPCAtomicQueue *queue, void *element) |
void * | PPCAtomicDequeue (PPCAtomicQueue *queue) |
int | PPCAtomicQueueEmpty (PPCAtomicQueue *queue) |
int | PPCAtomicQueueSpinWait (PPCAtomicQueue *queue, int n) |
int | PPCAtomicQueue2QSpinWait (PPCAtomicQueue *queue0, PPCAtomicQueue *queue1, int n) |
typedef void* PPCAtomicQueueElement |
Definition at line 41 of file PPCAtomicQueue.h.
typedef struct _ppcatomicstate PPCAtomicState |
typedef struct _ppcatomicq PPCAtomicQueue |
void PPC_AtomicCounterAllocate | ( | void ** | atomic_mem, | |
size_t | atomic_memsize | |||
) |
ppc_atomic_type_t PPC_AtomicLoadIncrementBounded | ( | volatile ppc_atomic_t * | counter | ) |
void PPC_AtomicStore | ( | volatile ppc_atomic_t * | counter, | |
ppc_atomic_type_t | val | |||
) |
void PPC_AtomicReadFence | ( | ) |
void PPC_AtomicWriteFence | ( | ) |
void PPCAtomicQueueInit | ( | void * | atomic_mem, | |
size_t | atomic_memsize, | |||
PPCAtomicQueue * | queue, | |||
int | use_overflow, | |||
int | nelem | |||
) |
Definition at line 61 of file PPCAtomicQueue.h.
References _ppcatomicq::_array, _ppcatomicq::_consumer, _ppcatomicq::_overflowQ, _ppcatomicq::_qsize, _ppcatomicq::_state, _ppcatomicq::_useOverflowQ, assert, PCQueueCreate(), posix_memalign(), PPC_AtomicStore(), _ppcatomicstate::Producer, and _ppcatomicstate::UpperBound.
Referenced by CmiMemAllocInit_ppcq().
int PPCAtomicEnqueue | ( | PPCAtomicQueue * | queue, | |
void * | element | |||
) |
Definition at line 97 of file PPCAtomicQueue.h.
References _ppcatomicq::_array, _ppcatomicq::_overflowQ, _ppcatomicq::_qsize, _ppcatomicq::_state, _ppcatomicq::_useOverflowQ, index, PCQueuePush(), PPC_AtomicLoadIncrementBounded(), PPC_AtomicWriteFence(), and _ppcatomicstate::Producer.
Referenced by CmiFree_ppcq().
void* PPCAtomicDequeue | ( | PPCAtomicQueue * | queue | ) |
Definition at line 120 of file PPCAtomicQueue.h.
References _ppcatomicq::_array, _ppcatomicq::_consumer, _ppcatomicq::_overflowQ, _ppcatomicq::_qsize, _ppcatomicq::_state, _ppcatomicq::_useOverflowQ, n, PCQueuePop(), PPC_AtomicReadFence(), PPC_AtomicStore(), _ppcatomicstate::Producer, and _ppcatomicstate::UpperBound.
Referenced by CmiAlloc_ppcq().
int PPCAtomicQueueEmpty | ( | PPCAtomicQueue * | queue | ) |
Definition at line 157 of file PPCAtomicQueue.h.
References _ppcatomicq::_consumer, _ppcatomicq::_overflowQ, _ppcatomicq::_state, PCQueueLength(), and _ppcatomicstate::Producer.
Referenced by PPCAtomicQueue2QSpinWait(), and PPCAtomicQueueSpinWait().
int PPCAtomicQueueSpinWait | ( | PPCAtomicQueue * | queue, | |
int | n | |||
) |
Definition at line 164 of file PPCAtomicQueue.h.
References _ppcatomicq::_consumer, _ppcatomicq::_state, PPCAtomicQueueEmpty(), and _ppcatomicstate::Producer.
int PPCAtomicQueue2QSpinWait | ( | PPCAtomicQueue * | queue0, | |
PPCAtomicQueue * | queue1, | |||
int | n | |||
) |
Definition at line 186 of file PPCAtomicQueue.h.
References _ppcatomicq::_consumer, _ppcatomicq::_state, PPCAtomicQueueEmpty(), and _ppcatomicstate::Producer.