diff options
author | Rickard Green <[email protected]> | 2015-06-10 18:07:13 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2015-06-10 18:07:13 +0200 |
commit | d395b5c5559a18e44258ca46e4b8703189d18067 (patch) | |
tree | fce2aa60407a450645c317f4dd43e34f43161d0a | |
parent | 831aab8a46f9f659bc422fbbef4971e9e68b201f (diff) | |
parent | a6038dac4b387a0f18be7d18467bbf8f83e8c765 (diff) | |
download | otp-d395b5c5559a18e44258ca46e4b8703189d18067.tar.gz otp-d395b5c5559a18e44258ca46e4b8703189d18067.tar.bz2 otp-d395b5c5559a18e44258ca46e4b8703189d18067.zip |
Merge branch 'rickard/lost-multi-aux-work/OTP-12812'
* rickard/lost-multi-aux-work/OTP-12812:
Fix lost aux work flags when setting multiple flags
-rw-r--r-- | erts/emulator/beam/erl_process.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c index 4940ffc4a0..1e7747c509 100644 --- a/erts/emulator/beam/erl_process.c +++ b/erts/emulator/beam/erl_process.c @@ -1193,11 +1193,11 @@ set_aux_work_flags_wakeup_nob(ErtsSchedulerSleepInfo *ssi, ERTS_DBG_CHK_SSI_AUX_WORK(ssi); old_flgs = erts_atomic32_read_nob(&ssi->aux_work); - if ((old_flgs & flgs) == 0) { + if ((old_flgs & flgs) != flgs) { old_flgs = erts_atomic32_read_bor_nob(&ssi->aux_work, flgs); - if ((old_flgs & flgs) == 0) { + if ((old_flgs & flgs) != flgs) { #ifdef ERTS_SMP erts_sched_poke(ssi); #else @@ -1217,7 +1217,7 @@ set_aux_work_flags_wakeup_relb(ErtsSchedulerSleepInfo *ssi, old_flgs = erts_atomic32_read_bor_relb(&ssi->aux_work, flgs); - if ((old_flgs & flgs) == 0) { + if ((old_flgs & flgs) != flgs) { #ifdef ERTS_SMP erts_sched_poke(ssi); #else |