aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2020-12-30 23:48:01 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2020-12-30 23:48:01 +0100
commit3c13da3dab539eac948de48640d8862857d0c8d0 (patch)
tree9cf3ae59b79ca89cbcfe08ce6b2b121f37d54a66 /libbb
parent89a55972fd5d7f0ab815c2a62be69a8f34718353 (diff)
downloadbusybox-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.c6
-rw-r--r--libbb/xfuncs_printf.c11
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)
291unsigned long long FAST_FUNC monotonic_ns(void) 291unsigned 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}
297unsigned long long FAST_FUNC monotonic_us(void) 297unsigned 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}
303unsigned long long FAST_FUNC monotonic_ms(void) 303unsigned 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}
309unsigned FAST_FUNC monotonic_sec(void) 309unsigned 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
724void 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}