diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2020-12-30 23:48:01 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2020-12-30 23:48:01 +0100 |
commit | 3c13da3dab539eac948de48640d8862857d0c8d0 (patch) | |
tree | 9cf3ae59b79ca89cbcfe08ce6b2b121f37d54a66 /libbb | |
parent | 89a55972fd5d7f0ab815c2a62be69a8f34718353 (diff) | |
download | busybox-w32-3c13da3dab539eac948de48640d8862857d0c8d0.tar.gz busybox-w32-3c13da3dab539eac948de48640d8862857d0c8d0.tar.bz2 busybox-w32-3c13da3dab539eac948de48640d8862857d0c8d0.zip |
libbb: introduce and use xgettimeofday(), do not truncate 64-bit time_t in shells
function old new delta
xgettimeofday - 11 +11
get_local_var_value 280 281 +1
svlogd_main 1323 1322 -1
change_epoch 67 66 -1
timestamp_and_log 461 458 -3
hwclock_main 301 298 -3
fmt_time_bernstein_25 135 132 -3
step_time 331 326 -5
script_main 1207 1202 -5
machtime 34 28 -6
curtime 61 54 -7
ts_main 423 415 -8
nmeter_main 761 751 -10
gettime1900d 67 46 -21
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/12 up/down: 12/-73) Total: -61 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/time.c | 6 | ||||
-rw-r--r-- | libbb/xfuncs_printf.c | 11 |
2 files changed, 14 insertions, 3 deletions
diff --git a/libbb/time.c b/libbb/time.c index 74a69eefb..cf5f2e5c8 100644 --- a/libbb/time.c +++ b/libbb/time.c | |||
@@ -291,19 +291,19 @@ unsigned FAST_FUNC monotonic_sec(void) | |||
291 | unsigned long long FAST_FUNC monotonic_ns(void) | 291 | unsigned long long FAST_FUNC monotonic_ns(void) |
292 | { | 292 | { |
293 | struct timeval tv; | 293 | struct timeval tv; |
294 | gettimeofday(&tv, NULL); | 294 | xgettimeofday(&tv); |
295 | return tv.tv_sec * 1000000000ULL + tv.tv_usec * 1000; | 295 | return tv.tv_sec * 1000000000ULL + tv.tv_usec * 1000; |
296 | } | 296 | } |
297 | unsigned long long FAST_FUNC monotonic_us(void) | 297 | unsigned long long FAST_FUNC monotonic_us(void) |
298 | { | 298 | { |
299 | struct timeval tv; | 299 | struct timeval tv; |
300 | gettimeofday(&tv, NULL); | 300 | xgettimeofday(&tv); |
301 | return tv.tv_sec * 1000000ULL + tv.tv_usec; | 301 | return tv.tv_sec * 1000000ULL + tv.tv_usec; |
302 | } | 302 | } |
303 | unsigned long long FAST_FUNC monotonic_ms(void) | 303 | unsigned long long FAST_FUNC monotonic_ms(void) |
304 | { | 304 | { |
305 | struct timeval tv; | 305 | struct timeval tv; |
306 | gettimeofday(&tv, NULL); | 306 | xgettimeofday(&tv); |
307 | return tv.tv_sec * 1000ULL + tv.tv_usec / 1000; | 307 | return tv.tv_sec * 1000ULL + tv.tv_usec / 1000; |
308 | } | 308 | } |
309 | unsigned FAST_FUNC monotonic_sec(void) | 309 | unsigned FAST_FUNC monotonic_sec(void) |
diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c index aea995a5c..99596b9d0 100644 --- a/libbb/xfuncs_printf.c +++ b/libbb/xfuncs_printf.c | |||
@@ -720,3 +720,14 @@ void FAST_FUNC xsettimeofday(const struct timeval *tv) | |||
720 | if (settimeofday(tv, NULL)) | 720 | if (settimeofday(tv, NULL)) |
721 | bb_simple_perror_msg_and_die("settimeofday"); | 721 | bb_simple_perror_msg_and_die("settimeofday"); |
722 | } | 722 | } |
723 | |||
724 | void FAST_FUNC xgettimeofday(struct timeval *tv) | ||
725 | { | ||
726 | #if 0 | ||
727 | if (gettimeofday(tv, NULL)) | ||
728 | bb_simple_perror_msg_and_die("gettimeofday"); | ||
729 | #else | ||
730 | /* Never fails on Linux */ | ||
731 | gettimeofday(tv, NULL); | ||
732 | #endif | ||
733 | } | ||