diff options
author | Erlang/OTP <[email protected]> | 2015-07-08 20:31:18 +0200 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2015-07-08 20:31:18 +0200 |
commit | 385b215c420b1a3b98f02a67c562f2ed0512f17a (patch) | |
tree | 98ca35f000f2fd8bbbd2caaa8f4fe07e699a81c7 | |
parent | 86a121c5e59ab891b51ba8f28b705659d84e7330 (diff) | |
parent | 4a864c1cbe16a42f3f5190881187e3c9849e985f (diff) | |
download | otp-385b215c420b1a3b98f02a67c562f2ed0512f17a.tar.gz otp-385b215c420b1a3b98f02a67c562f2ed0512f17a.tar.bz2 otp-385b215c420b1a3b98f02a67c562f2ed0512f17a.zip |
Merge branch 'rickard/monotonic-clock-source/OTP-12895' into maint-18
* rickard/monotonic-clock-source/OTP-12895:
Prefer monotonic time that stop during suspend
-rw-r--r-- | HOWTO/INSTALL.md | 4 | ||||
-rw-r--r-- | erts/aclocal.m4 | 34 |
2 files changed, 29 insertions, 9 deletions
diff --git a/HOWTO/INSTALL.md b/HOWTO/INSTALL.md index 4c89370691..837e6cbd76 100644 --- a/HOWTO/INSTALL.md +++ b/HOWTO/INSTALL.md @@ -402,6 +402,10 @@ Some of the available `configure` options are: dependant application. * `--enable-gettimeofday-as-os-system-time` - Force usage of `gettimeofday()` for OS system time. +* `--enable-prefer-elapsed-monotonic-time-during-suspend` - Prefer an OS monotonic + time source with elapsed time during suspend. +* `--disable-prefer-elapsed-monotonic-time-during-suspend` - Do not prefer an OS + monotonic time source with elapsed time during suspend. * `--enable-dirty-schedulers` - Enable the **experimental** dirty schedulers functionality. Note that the dirty schedulers functionality is experimental, and **not supported**. This functionality **will** be subject to backward diff --git a/erts/aclocal.m4 b/erts/aclocal.m4 index dd5d3979a7..0714ce6030 100644 --- a/erts/aclocal.m4 +++ b/erts/aclocal.m4 @@ -726,9 +726,15 @@ esac AC_DEFUN(ERL_MONOTONIC_CLOCK, [ - default_resolution_clock_gettime_monotonic="CLOCK_HIGHRES CLOCK_BOOTTIME CLOCK_MONOTONIC" - low_resolution_clock_gettime_monotonic="CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC_FAST" - high_resolution_clock_gettime_monotonic="CLOCK_MONOTONIC_PRECISE" + if test "$3" = "yes"; then + default_resolution_clock_gettime_monotonic="CLOCK_HIGHRES CLOCK_BOOTTIME CLOCK_MONOTONIC" + low_resolution_clock_gettime_monotonic="CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC_FAST" + high_resolution_clock_gettime_monotonic="CLOCK_MONOTONIC_PRECISE" + else + default_resolution_clock_gettime_monotonic="CLOCK_HIGHRES CLOCK_UPTIME CLOCK_MONOTONIC" + low_resolution_clock_gettime_monotonic="CLOCK_MONOTONIC_COARSE CLOCK_UPTIME_FAST" + high_resolution_clock_gettime_monotonic="CLOCK_UPTIME_PRECISE" + fi case "$1" in high_resolution) @@ -1466,7 +1472,7 @@ AC_ARG_WITH(with_sparc_memory_order, LM_CHECK_THR_LIB ERL_INTERNAL_LIBS -ERL_MONOTONIC_CLOCK(high_resolution) +ERL_MONOTONIC_CLOCK(high_resolution, undefined, no) case $erl_monotonic_clock_func in clock_gettime) @@ -2212,6 +2218,16 @@ AC_ARG_WITH(clock-gettime-monotonic-id, AS_HELP_STRING([--with-clock-gettime-monotonic-id=CLOCKID], [specify clock id to use with clock_gettime() for monotonic time)])) +AC_ARG_ENABLE(prefer-elapsed-monotonic-time-during-suspend, + AS_HELP_STRING([--enable-prefer-elapsed-monotonic-time-during-suspend], + [Prefer an OS monotonic time source with elapsed time during suspend]) + AS_HELP_STRING([--disable-prefer-elapsed-monotonic-time-during-suspend], + [Do not prefer an OS monotonic time source with elapsed time during suspend]), +[ case "$enableval" in + yes) prefer_elapsed_monotonic_time_during_suspend=yes ;; + *) prefer_elapsed_monotonic_time_during_suspend=no ;; + esac ], prefer_elapsed_monotonic_time_during_suspend=no) + AC_ARG_ENABLE(gettimeofday-as-os-system-time, AS_HELP_STRING([--enable-gettimeofday-as-os-system-time], [Force usage of gettimeofday() for OS system time]), @@ -2319,13 +2335,13 @@ esac case "$with_clock_resolution-$with_clock_gettime_monotonic_id" in high-no) - ERL_MONOTONIC_CLOCK(high_resolution);; + ERL_MONOTONIC_CLOCK(high_resolution, undefined, $prefer_elapsed_monotonic_time_during_suspend);; low-no) - ERL_MONOTONIC_CLOCK(low_resolution);; + ERL_MONOTONIC_CLOCK(low_resolution, undefined, $prefer_elapsed_monotonic_time_during_suspend);; default-no) - ERL_MONOTONIC_CLOCK(default_resolution);; + ERL_MONOTONIC_CLOCK(default_resolution, undefined, $prefer_elapsed_monotonic_time_during_suspend);; *) - ERL_MONOTONIC_CLOCK(custom_resolution, $with_clock_gettime_monotonic_id);; + ERL_MONOTONIC_CLOCK(custom_resolution, $with_clock_gettime_monotonic_id, $prefer_elapsed_monotonic_time_during_suspend);; esac case "$erl_monotonic_clock_func-$erl_monotonic_clock_id-$with_clock_gettime_monotonic_id" in @@ -2373,7 +2389,7 @@ if test $erl_cv_clock_gettime_monotonic_raw = yes; then AC_DEFINE(HAVE_CLOCK_GETTIME_MONOTONIC_RAW, [1], [Define if you have clock_gettime(CLOCK_MONOTONIC_RAW, _)]) fi -ERL_MONOTONIC_CLOCK(high_resolution) +ERL_MONOTONIC_CLOCK(high_resolution, undefined, no) case $$erl_monotonic_clock_low_resolution-$erl_monotonic_clock_func in no-mach_clock_get_time) |