aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/sys/win32/erl_poll.c
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2018-12-06 11:53:18 +0100
committerLukas Larsson <[email protected]>2018-12-06 11:53:18 +0100
commitea7d6c39f2179b2240d55df4a1ddd515b6d32832 (patch)
tree117436f49db44ee51a9b28c0cf94e094c31ed280 /erts/emulator/sys/win32/erl_poll.c
parent551e15331967551307b1618248334b20dce3241c (diff)
parent73e4f5f21bbf492ab61c01dee48fa09fd7309a50 (diff)
downloadotp-ea7d6c39f2179b2240d55df4a1ddd515b6d32832.tar.gz
otp-ea7d6c39f2179b2240d55df4a1ddd515b6d32832.tar.bz2
otp-ea7d6c39f2179b2240d55df4a1ddd515b6d32832.zip
Merge branch 'maint'
Conflicts: erts/emulator/beam/erl_process.c
Diffstat (limited to 'erts/emulator/sys/win32/erl_poll.c')
-rw-r--r--erts/emulator/sys/win32/erl_poll.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/erts/emulator/sys/win32/erl_poll.c b/erts/emulator/sys/win32/erl_poll.c
index 39bb4d515e..3843a27a6e 100644
--- a/erts/emulator/sys/win32/erl_poll.c
+++ b/erts/emulator/sys/win32/erl_poll.c
@@ -1017,10 +1017,12 @@ ErtsPollEvents erts_poll_control(ErtsPollSet *ps,
int erts_poll_wait(ErtsPollSet *ps,
ErtsPollResFd pr[],
- int *len)
+ int *len,
+ ErtsThrPrgrData *tpd,
+ Sint64 timeout_in)
{
int no_fds;
- DWORD timeout = INFINITE;
+ DWORD timeout = timeout_in == -1 ? INFINITE : timeout_in;
EventData* ev;
int res = 0;
int num = 0;
@@ -1056,10 +1058,10 @@ int erts_poll_wait(ErtsPollSet *ps,
HARDDEBUGF(("Start waiting %d [%d]",num_h, (int) timeout));
ERTS_POLLSET_UNLOCK(ps);
- erts_thr_progress_prepare_wait(NULL);
+ erts_thr_progress_prepare_wait(tpd);
ERTS_MSACC_SET_STATE_CACHED(ERTS_MSACC_STATE_SLEEP);
handle = WaitForMultipleObjects(num_h, harr, FALSE, timeout);
- erts_thr_progress_finalize_wait(NULL);
+ erts_thr_progress_finalize_wait(tpd);
ERTS_MSACC_POP_STATE();
ERTS_POLLSET_LOCK(ps);
HARDDEBUGF(("Stop waiting %d [%d]",num_h, (int) timeout));