aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_async.c
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2011-12-07 20:05:39 +0100
committerRickard Green <[email protected]>2011-12-07 20:21:24 +0100
commit2bfc6d6791274e8f170e8972c899dcb66e8881c1 (patch)
treef6699766d360dd0cb9991886dab9c2206730a15f /erts/emulator/beam/erl_async.c
parent69969c2cd7b2aa3efbf35df8a908a17377a895a4 (diff)
downloadotp-2bfc6d6791274e8f170e8972c899dcb66e8881c1.tar.gz
otp-2bfc6d6791274e8f170e8972c899dcb66e8881c1.tar.bz2
otp-2bfc6d6791274e8f170e8972c899dcb66e8881c1.zip
Fix cleanup of elements in lock-free queues
Diffstat (limited to 'erts/emulator/beam/erl_async.c')
-rw-r--r--erts/emulator/beam/erl_async.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/erts/emulator/beam/erl_async.c b/erts/emulator/beam/erl_async.c
index 2dc7237f7c..8bca9ae582 100644
--- a/erts/emulator/beam/erl_async.c
+++ b/erts/emulator/beam/erl_async.c
@@ -304,8 +304,9 @@ static ERTS_INLINE ErtsAsync *async_get(ErtsThrQ_t *q,
switch (erts_thr_q_inspect(q, 1)) {
case ERTS_THR_Q_DIRTY:
break;
+ case ERTS_THR_Q_NEED_THR_PRGR:
#ifdef ERTS_SMP
- case ERTS_THR_Q_NEED_THR_PRGR: {
+ {
ErtsThrPrgrVal prgr = erts_thr_q_need_thr_progress(q);
erts_thr_progress_wakeup(NULL, prgr);
/*
@@ -522,8 +523,8 @@ int erts_async_ready_clean(void *varq, void *val)
switch (cstate) {
case ERTS_THR_Q_DIRTY:
return ERTS_ASYNC_READY_DIRTY;
-#ifdef ERTS_SMP
case ERTS_THR_Q_NEED_THR_PRGR:
+#ifdef ERTS_SMP
*((ErtsThrPrgrVal *) val)
= erts_thr_q_need_thr_progress(&arq->thr_q);
return ERTS_ASYNC_READY_NEED_THR_PRGR;