diff options
author | Rickard Green <[email protected]> | 2015-05-08 17:47:27 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2015-05-08 17:47:27 +0200 |
commit | cc03bb892c4ecf2344234d4f7b1b49133d782f41 (patch) | |
tree | a68976350b73526dfe37fe4ad4384226c1652782 /erts/emulator/beam/erl_thr_progress.c | |
parent | 207346e0543143bf1aea11a93bcb24de170fc0ac (diff) | |
parent | 9c78f149517dc02457d4c59e90bc9b03d411e28c (diff) | |
download | otp-cc03bb892c4ecf2344234d4f7b1b49133d782f41.tar.gz otp-cc03bb892c4ecf2344234d4f7b1b49133d782f41.tar.bz2 otp-cc03bb892c4ecf2344234d4f7b1b49133d782f41.zip |
Merge branch 'rickard/timer-optimization/OTP-12650'
* rickard/timer-optimization/OTP-12650:
Optimized timer implementation
Reusable red-black tree implementation
Conflicts:
erts/emulator/beam/erl_bif_timer.c
Diffstat (limited to 'erts/emulator/beam/erl_thr_progress.c')
-rw-r--r-- | erts/emulator/beam/erl_thr_progress.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/erts/emulator/beam/erl_thr_progress.c b/erts/emulator/beam/erl_thr_progress.c index 4c9b00d2ee..78e0964e8b 100644 --- a/erts/emulator/beam/erl_thr_progress.c +++ b/erts/emulator/beam/erl_thr_progress.c @@ -1360,6 +1360,7 @@ erts_thr_progress_fatal_error_wait(SWord timeout) { erts_aint32_t bc; SWord time_left = timeout; ErtsMonotonicTime timeout_time; + ErtsSchedulerData *esdp = erts_get_scheduler_data(); /* * Counting poll intervals may give us a too long timeout @@ -1367,7 +1368,7 @@ erts_thr_progress_fatal_error_wait(SWord timeout) { * this. In case we havn't got time correction this may * however fail too... */ - timeout_time = erts_get_monotonic_time(); + timeout_time = erts_get_monotonic_time(esdp); timeout_time += ERTS_MSEC_TO_MONOTONIC((ErtsMonotonicTime) timeout); while (1) { @@ -1378,7 +1379,7 @@ erts_thr_progress_fatal_error_wait(SWord timeout) { break; /* Succefully blocked all managed threads */ if (time_left <= 0) break; /* Timeout */ - if (timeout_time <= erts_get_monotonic_time()) + if (timeout_time <= erts_get_monotonic_time(esdp)) break; /* Timeout */ } } |