From e385d78b2955940051edf1eff874d14666b1a14d Mon Sep 17 00:00:00 2001 From: Sameer Kumar Date: Tue, 26 Feb 2013 09:49:24 +0000 Subject: [PATCH] BGQ: Adding blocking atomic queue --- src/arch/pami-bluegeneq/L2AtomicQueue.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/arch/pami-bluegeneq/L2AtomicQueue.h b/src/arch/pami-bluegeneq/L2AtomicQueue.h index d6e7f8ec0d..d1db471134 100644 --- a/src/arch/pami-bluegeneq/L2AtomicQueue.h +++ b/src/arch/pami-bluegeneq/L2AtomicQueue.h @@ -18,6 +18,8 @@ #define L2A_EAGAIN -1 #define L2A_FAIL -2 +#define __L2_ATOMIC_QUEUE_BLOCKING 1 + typedef void* L2AtomicQueueElement; typedef struct _l2atomicstate { @@ -105,10 +107,13 @@ void * L2AtomicDequeue (L2AtomicQueue *queue) volatile void *e = NULL; if (head < tail) { e = queue->_array[head & qsize_1]; +#if __L2_ATOMIC_QUEUE_BLOCKING while (e == NULL) e = queue->_array[head & qsize_1]; - - //fprintf(stderr,"Found message %p\n", e); +#else + if (e == NULL) + return NULL; +#endif queue->_array[head & qsize_1] = NULL; ppc_msync(); -- 2.11.4.GIT