diff options
author | Rickard Green <[email protected]> | 2011-12-07 20:05:39 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2011-12-07 20:21:24 +0100 |
commit | 2bfc6d6791274e8f170e8972c899dcb66e8881c1 (patch) | |
tree | f6699766d360dd0cb9991886dab9c2206730a15f /erts/emulator/beam/erl_async.c | |
parent | 69969c2cd7b2aa3efbf35df8a908a17377a895a4 (diff) | |
download | otp-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.c | 5 |
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; |