diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2019-07-29 23:47:04 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2019-07-29 23:52:37 +0900 |
commit | 77372afbe06d60c8700c5466824396c72e312cb1 (patch) | |
tree | ddfa2868295772c34aa031d4263016723a7b29dd | |
parent | 57894dc98977dbe33734d5b7319bd7a89ce809d1 (diff) | |
download | systemd-77372afbe06d60c8700c5466824396c72e312cb1.tar.gz |
time-util: introduce jiffies_to_usec()
-rw-r--r-- | src/basic/time-util.c | 16 | ||||
-rw-r--r-- | src/basic/time-util.h | 3 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/basic/time-util.c b/src/basic/time-util.c index 434159f41c..e13361463b 100644 --- a/src/basic/time-util.c +++ b/src/basic/time-util.c @@ -1414,8 +1414,8 @@ struct tm *localtime_or_gmtime_r(const time_t *t, struct tm *tm, bool utc) { return utc ? gmtime_r(t, tm) : localtime_r(t, tm); } -unsigned long usec_to_jiffies(usec_t u) { - static thread_local unsigned long hz = 0; +static uint32_t sysconf_clock_ticks_cached(void) { + static thread_local uint32_t hz = 0; long r; if (hz == 0) { @@ -1425,7 +1425,17 @@ unsigned long usec_to_jiffies(usec_t u) { hz = r; } - return DIV_ROUND_UP(u , USEC_PER_SEC / hz); + return hz; +} + +uint32_t usec_to_jiffies(usec_t u) { + uint32_t hz = sysconf_clock_ticks_cached(); + return DIV_ROUND_UP(u, USEC_PER_SEC / hz); +} + +usec_t jiffies_to_usec(uint32_t j) { + uint32_t hz = sysconf_clock_ticks_cached(); + return DIV_ROUND_UP(j * USEC_PER_SEC, hz); } usec_t usec_shift_clock(usec_t x, clockid_t from, clockid_t to) { diff --git a/src/basic/time-util.h b/src/basic/time-util.h index e3a529d970..4c371257e3 100644 --- a/src/basic/time-util.h +++ b/src/basic/time-util.h @@ -136,7 +136,8 @@ int get_timezone(char **timezone); time_t mktime_or_timegm(struct tm *tm, bool utc); struct tm *localtime_or_gmtime_r(const time_t *t, struct tm *tm, bool utc); -unsigned long usec_to_jiffies(usec_t usec); +uint32_t usec_to_jiffies(usec_t usec); +usec_t jiffies_to_usec(uint32_t jiffies); bool in_utc_timezone(void); |