PPL Logo

arch/util/PPCAtomicQueue.h File Reference

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 Documentation

typedef void* PPCAtomicQueueElement

Definition at line 41 of file PPCAtomicQueue.h.

typedef struct _ppcatomicq PPCAtomicQueue


Function Documentation

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 
)

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().

Here is the call graph for this function:

Here is the caller graph for this function:

void* PPCAtomicDequeue ( PPCAtomicQueue queue  ) 

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().

Here is the call graph for this function:

Here is the caller graph for this function:

int PPCAtomicQueueSpinWait ( PPCAtomicQueue queue,
int  n 
)

Definition at line 164 of file PPCAtomicQueue.h.

References _ppcatomicq::_consumer, _ppcatomicq::_state, PPCAtomicQueueEmpty(), and _ppcatomicstate::Producer.

Here is the call graph for this function:

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.

Here is the call graph for this function:


Generated on Mon Sep 21 07:56:50 2020 for Charm++ by  doxygen 1.5.5