diff options
author | Rickard Green <[email protected]> | 2011-03-10 14:29:59 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2011-03-10 14:29:59 +0100 |
commit | 0213def22b5ab6f145a5529f9bbef0d26124abaf (patch) | |
tree | 5c47bce2d933052236bc7b9f9b4253d2489f3557 /erts/emulator/beam/erl_process.h | |
parent | 839e24abdcc3e5a16ac78eb45e09736370e596fe (diff) | |
parent | a37ee29884eaaf8b177cec19821159c938ddf6ff (diff) | |
download | otp-0213def22b5ab6f145a5529f9bbef0d26124abaf.tar.gz otp-0213def22b5ab6f145a5529f9bbef0d26124abaf.tar.bz2 otp-0213def22b5ab6f145a5529f9bbef0d26124abaf.zip |
Merge branch 'rickard/scheduler-wait/OTP-9105' into dev
* rickard/scheduler-wait/OTP-9105:
The emulator could get into a state where it didn't check for I/O.
Diffstat (limited to 'erts/emulator/beam/erl_process.h')
-rw-r--r-- | erts/emulator/beam/erl_process.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_process.h b/erts/emulator/beam/erl_process.h index e871a9834a..8f78a7d76e 100644 --- a/erts/emulator/beam/erl_process.h +++ b/erts/emulator/beam/erl_process.h @@ -1592,7 +1592,9 @@ ERTS_GLB_INLINE void erts_sched_poke(ErtsSchedulerSleepInfo *ssi); ERTS_GLB_INLINE void erts_sched_poke(ErtsSchedulerSleepInfo *ssi) { - erts_aint32_t flags = erts_smp_atomic32_read(&ssi->flags); + erts_aint32_t flags; + ERTS_THR_MEMORY_BARRIER; + flags = erts_smp_atomic32_read(&ssi->flags); ASSERT(!(flags & ERTS_SSI_FLG_SLEEPING) || (flags & ERTS_SSI_FLG_WAITING)); if (flags & ERTS_SSI_FLG_SLEEPING) { |