aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_async.c
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2011-12-08 15:18:51 +0100
committerRickard Green <[email protected]>2011-12-08 15:18:51 +0100
commit9bc76f48bfbd9773d77d75b1a94cf1097cca9fb6 (patch)
tree9e6ec33806e1a6cf1dd96754d0f5b52b83011ac4 /erts/emulator/beam/erl_async.c
parent18589c852aa7a535bb518cf79a2c510caa830110 (diff)
parentd51b42b76fb9d6826ee282352ca878c02a7b459d (diff)
downloadotp-9bc76f48bfbd9773d77d75b1a94cf1097cca9fb6.tar.gz
otp-9bc76f48bfbd9773d77d75b1a94cf1097cca9fb6.tar.bz2
otp-9bc76f48bfbd9773d77d75b1a94cf1097cca9fb6.zip
Merge branch 'rickard/generic-thr-queue/OTP-9632'
* rickard/generic-thr-queue/OTP-9632: Give elements of lock-free queues some time to be deallocated 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;