ring 41 opal/class/opal_ring_buffer.c static void opal_ring_buffer_construct(opal_ring_buffer_t *ring) ring 43 opal/class/opal_ring_buffer.c OBJ_CONSTRUCT(&ring->lock, opal_mutex_t); ring 44 opal/class/opal_ring_buffer.c OBJ_CONSTRUCT(&ring->cond, opal_condition_t); ring 45 opal/class/opal_ring_buffer.c ring->in_use = false; ring 46 opal/class/opal_ring_buffer.c ring->head = 0; ring 47 opal/class/opal_ring_buffer.c ring->tail = -1; ring 48 opal/class/opal_ring_buffer.c ring->size = 0; ring 49 opal/class/opal_ring_buffer.c ring->addr = NULL; ring 55 opal/class/opal_ring_buffer.c static void opal_ring_buffer_destruct(opal_ring_buffer_t *ring) ring 57 opal/class/opal_ring_buffer.c if( NULL != ring->addr) { ring 58 opal/class/opal_ring_buffer.c free(ring->addr); ring 59 opal/class/opal_ring_buffer.c ring->addr = NULL; ring 62 opal/class/opal_ring_buffer.c ring->size = 0; ring 64 opal/class/opal_ring_buffer.c OBJ_DESTRUCT(&ring->lock); ring 65 opal/class/opal_ring_buffer.c OBJ_DESTRUCT(&ring->cond); ring 71 opal/class/opal_ring_buffer.c int opal_ring_buffer_init(opal_ring_buffer_t* ring, int size) ring 74 opal/class/opal_ring_buffer.c if (NULL == ring) { ring 79 opal/class/opal_ring_buffer.c ring->addr = (char **)calloc(size * sizeof(char*), 1); ring 80 opal/class/opal_ring_buffer.c if (NULL == ring->addr) { /* out of memory */ ring 83 opal/class/opal_ring_buffer.c ring->size = size; ring 88 opal/class/opal_ring_buffer.c void* opal_ring_buffer_push(opal_ring_buffer_t *ring, void *ptr) ring 92 opal/class/opal_ring_buffer.c OPAL_ACQUIRE_THREAD(&(ring->lock), &(ring->cond), &(ring->in_use)); ring 93 opal/class/opal_ring_buffer.c if (NULL != ring->addr[ring->head]) { ring 94 opal/class/opal_ring_buffer.c p = (char*)ring->addr[ring->head]; ring 95 opal/class/opal_ring_buffer.c if (ring->tail == ring->size - 1) { ring 96 opal/class/opal_ring_buffer.c ring->tail = 0; ring 98 opal/class/opal_ring_buffer.c ring->tail = ring->head + 1; ring 101 opal/class/opal_ring_buffer.c ring->addr[ring->head] = (char*)ptr; ring 102 opal/class/opal_ring_buffer.c if (ring->tail < 0) { ring 103 opal/class/opal_ring_buffer.c ring->tail = ring->head; ring 105 opal/class/opal_ring_buffer.c if (ring->head == ring->size - 1) { ring 106 opal/class/opal_ring_buffer.c ring->head = 0; ring 108 opal/class/opal_ring_buffer.c ring->head++; ring 110 opal/class/opal_ring_buffer.c OPAL_RELEASE_THREAD(&(ring->lock), &(ring->cond), &(ring->in_use)); ring 114 opal/class/opal_ring_buffer.c void* opal_ring_buffer_pop(opal_ring_buffer_t *ring) ring 118 opal/class/opal_ring_buffer.c OPAL_ACQUIRE_THREAD(&(ring->lock), &(ring->cond), &(ring->in_use)); ring 119 opal/class/opal_ring_buffer.c if (-1 == ring->tail) { ring 123 opal/class/opal_ring_buffer.c p = (char*)ring->addr[ring->tail]; ring 124 opal/class/opal_ring_buffer.c ring->addr[ring->tail] = NULL; ring 125 opal/class/opal_ring_buffer.c if (ring->tail == ring->size-1) { ring 126 opal/class/opal_ring_buffer.c ring->tail = 0; ring 128 opal/class/opal_ring_buffer.c ring->tail++; ring 131 opal/class/opal_ring_buffer.c if (ring->tail == ring->head) { ring 132 opal/class/opal_ring_buffer.c ring->tail = -1; ring 135 opal/class/opal_ring_buffer.c OPAL_RELEASE_THREAD(&(ring->lock), &(ring->cond), &(ring->in_use)); ring 139 opal/class/opal_ring_buffer.c void* opal_ring_buffer_poke(opal_ring_buffer_t *ring, int i) ring 144 opal/class/opal_ring_buffer.c OPAL_ACQUIRE_THREAD(&(ring->lock), &(ring->cond), &(ring->in_use)); ring 145 opal/class/opal_ring_buffer.c if (ring->size <= i || -1 == ring->tail) { ring 149 opal/class/opal_ring_buffer.c if (ring->head == 0) { ring 150 opal/class/opal_ring_buffer.c p = ring->addr[ring->size - 1]; ring 152 opal/class/opal_ring_buffer.c p = ring->addr[ring->head - 1]; ring 156 opal/class/opal_ring_buffer.c offset = ring->tail + i; ring 158 opal/class/opal_ring_buffer.c if (ring->size <= offset) { ring 159 opal/class/opal_ring_buffer.c offset -= ring->size; ring 161 opal/class/opal_ring_buffer.c p = ring->addr[offset]; ring 163 opal/class/opal_ring_buffer.c OPAL_RELEASE_THREAD(&(ring->lock), &(ring->cond), &(ring->in_use)); ring 71 opal/class/opal_ring_buffer.h OPAL_DECLSPEC int opal_ring_buffer_init(opal_ring_buffer_t* ring, int size); ring 82 opal/class/opal_ring_buffer.h OPAL_DECLSPEC void* opal_ring_buffer_push(opal_ring_buffer_t *ring, void *ptr); ring 94 opal/class/opal_ring_buffer.h OPAL_DECLSPEC void* opal_ring_buffer_pop(opal_ring_buffer_t *ring); ring 101 opal/class/opal_ring_buffer.h OPAL_DECLSPEC void* opal_ring_buffer_poke(opal_ring_buffer_t *ring, int i); ring 42 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c static void pmix_ring_buffer_construct(pmix_ring_buffer_t *ring) ring 44 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->head = 0; ring 45 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->tail = -1; ring 46 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->size = 0; ring 47 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->addr = NULL; ring 53 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c static void pmix_ring_buffer_destruct(pmix_ring_buffer_t *ring) ring 55 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c if( NULL != ring->addr) { ring 56 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c free(ring->addr); ring 57 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->addr = NULL; ring 60 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->size = 0; ring 66 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c int pmix_ring_buffer_init(pmix_ring_buffer_t* ring, int size) ring 69 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c if (NULL == ring) { ring 74 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->addr = (char **)calloc(size * sizeof(char*), 1); ring 75 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c if (NULL == ring->addr) { /* out of memory */ ring 78 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->size = size; ring 83 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c void* pmix_ring_buffer_push(pmix_ring_buffer_t *ring, void *ptr) ring 87 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c if (NULL != ring->addr[ring->head]) { ring 88 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c p = (char*)ring->addr[ring->head]; ring 89 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c if (ring->tail == ring->size - 1) { ring 90 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->tail = 0; ring 92 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->tail = ring->head + 1; ring 95 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->addr[ring->head] = (char*)ptr; ring 96 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c if (ring->tail < 0) { ring 97 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->tail = ring->head; ring 99 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c if (ring->head == ring->size - 1) { ring 100 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->head = 0; ring 102 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->head++; ring 107 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c void* pmix_ring_buffer_pop(pmix_ring_buffer_t *ring) ring 111 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c if (-1 == ring->tail) { ring 115 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c p = (char*)ring->addr[ring->tail]; ring 116 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->addr[ring->tail] = NULL; ring 117 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c if (ring->tail == ring->size-1) { ring 118 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->tail = 0; ring 120 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->tail++; ring 123 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c if (ring->tail == ring->head) { ring 124 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c ring->tail = -1; ring 130 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c void* pmix_ring_buffer_poke(pmix_ring_buffer_t *ring, int i) ring 135 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c if (ring->size <= i || -1 == ring->tail) { ring 139 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c if (ring->head == 0) { ring 140 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c p = ring->addr[ring->size - 1]; ring 142 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c p = ring->addr[ring->head - 1]; ring 146 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c offset = ring->tail + i; ring 148 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c if (ring->size <= offset) { ring 149 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c offset -= ring->size; ring 151 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.c p = ring->addr[offset]; ring 67 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.h PMIX_EXPORT int pmix_ring_buffer_init(pmix_ring_buffer_t* ring, int size); ring 79 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.h PMIX_EXPORT void* pmix_ring_buffer_push(pmix_ring_buffer_t *ring, void *ptr); ring 91 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.h PMIX_EXPORT void* pmix_ring_buffer_pop(pmix_ring_buffer_t *ring); ring 98 opal/mca/pmix/pmix4x/pmix/src/class/pmix_ring_buffer.h PMIX_EXPORT void* pmix_ring_buffer_poke(pmix_ring_buffer_t *ring, int i);