diff options
author | Lukas Larsson <[email protected]> | 2016-02-02 17:17:46 +0100 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2016-02-02 17:17:46 +0100 |
commit | 246927d866b7de938cc58c95498f54b03869cbe5 (patch) | |
tree | 63c4846a861aec6051b4f31aa1c5f5186802855a /erts/emulator/sys/win32/erl_poll.c | |
parent | f45b817d0da8f9f61d2241d4f0eb06e47a6be86a (diff) | |
parent | f12da3c4abe70bd932484895af6e23436b308f53 (diff) | |
download | otp-246927d866b7de938cc58c95498f54b03869cbe5.tar.gz otp-246927d866b7de938cc58c95498f54b03869cbe5.tar.bz2 otp-246927d866b7de938cc58c95498f54b03869cbe5.zip |
Merge branch 'lukas/erts/msacc'
* lukas/erts/msacc:
Update preloaded modules
erts: Make msacc alloctor type thread safe
Silence compiler
erts: Fix msacc testcase on some windowses
erts: Add power saving cpu feature tests and use them
erts: Refactor perf counter internal interface
erts: Add rdtscp instruction check
erts: Fix hrtime for windows
erts: use correct function for perf counter on non-x86
erts: Fix msacc win32 debug compile error
erts: Add microstate accounting
erts, kernel: Add os:perf_counter function
erts: Add ERTS_WRITE_UNLIKELY
Diffstat (limited to 'erts/emulator/sys/win32/erl_poll.c')
-rw-r--r-- | erts/emulator/sys/win32/erl_poll.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/erts/emulator/sys/win32/erl_poll.c b/erts/emulator/sys/win32/erl_poll.c index 466f4a3b48..660ded297a 100644 --- a/erts/emulator/sys/win32/erl_poll.c +++ b/erts/emulator/sys/win32/erl_poll.c @@ -27,6 +27,7 @@ #include "erl_alloc.h" #include "erl_poll.h" #include "erl_time.h" +#include "erl_msacc.h" /* * Some debug macros @@ -1188,16 +1189,19 @@ int erts_poll_wait(ErtsPollSet ps, if (timeout > 0 && !erts_atomic32_read_nob(&break_waiter_state)) { HANDLE harr[2] = {ps->event_io_ready, break_happened_event}; int num_h = 2; + ERTS_MSACC_PUSH_STATE_M(); HARDDEBUGF(("Start waiting %d [%d]",num_h, (int) timeout)); ERTS_POLLSET_UNLOCK(ps); #ifdef ERTS_SMP erts_thr_progress_prepare_wait(NULL); #endif + ERTS_MSACC_SET_STATE_CACHED_M(ERTS_MSACC_STATE_SLEEP); WaitForMultipleObjects(num_h, harr, FALSE, timeout); #ifdef ERTS_SMP erts_thr_progress_finalize_wait(NULL); #endif + ERTS_MSACC_POP_STATE_M(); ERTS_POLLSET_LOCK(ps); HARDDEBUGF(("Stop waiting %d [%d]",num_h, (int) timeout)); woke_up(ps); |