21 #ifndef OPAL_ATOMIC_LIFO_H_HAS_BEEN_INCLUDED
22 #define OPAL_ATOMIC_LIFO_H_HAS_BEEN_INCLUDED
24 #include "opal_config.h"
27 #if OPAL_ENABLE_MULTI_THREADS
60 return (lifo->opal_lifo_head == &(lifo->opal_lifo_ghost) ?
true :
false);
71 #if OPAL_ENABLE_MULTI_THREADS
75 if( opal_atomic_cmpset_ptr( &(lifo->opal_lifo_head),
78 opal_atomic_cmpset_32((
volatile int32_t*)&item->item_free, 1, 0);
85 lifo->opal_lifo_head = item;
96 #if OPAL_ENABLE_MULTI_THREADS
97 while((item = lifo->opal_lifo_head) != &(lifo->opal_lifo_ghost))
100 if(!opal_atomic_cmpset_32((
volatile int32_t*)&item->item_free, 0, 1))
102 if( opal_atomic_cmpset_ptr( &(lifo->opal_lifo_head),
106 opal_atomic_cmpset_32((
volatile int32_t*)&item->item_free, 1, 0);
110 item = lifo->opal_lifo_head;
113 if( item == &(lifo->opal_lifo_ghost) )
return NULL;
volatile struct opal_list_item_t * opal_list_next
Pointer to next list item.
Definition: opal_list.h:102
void opal_atomic_rmb(void)
Read memory barrier.
The opal_list_t interface is used to provide a generic doubly-linked list container for Open MPI...
Definition: opal_atomic_lifo.h:42
Definition: opal_list.h:98
Base object.
Definition: opal_object.h:182
void opal_atomic_wmb(void)
Write memory barrier.
#define OBJ_CLASS_DECLARATION(NAME)
Declaration for class descriptor.
Definition: opal_object.h:236