mirror of
https://git.busybox.net/busybox.git
synced 2025-01-25 14:53:24 +08:00
bd7bb299c0
zcip: use monotonic_us instead of gettimeofday udhcpcd: simpler, shorter random_xid() function old new delta monotonic_sec - 41 +41 find_pair 164 180 +16 run_list_real 2018 2028 +10 cmp_main 547 555 +8 collect_ctx 112 119 +7 singlemount 4544 4549 +5 time_main 1124 1128 +4 static.start_sec - 4 +4 static.lastupdate_sec - 4 +4 sock - 4 +4 read_package_field 253 257 +4 pick 38 40 +2 get_next_line 145 147 +2 count_lines 59 61 +2 process_stdin 435 433 -2 xstrtoul_range_sfx 229 226 -3 static.initialized 4 1 -3 dhcprelay_main 1125 1122 -3 catcher 380 377 -3 arping_main 1969 1966 -3 s 8 4 -4 cfg 4 - -4 static.lastupdate 8 - -8 start 8 - -8 random_xid 95 33 -62 .rodata 129114 129050 -64 zcip_main 1731 1576 -155 progressmeter 1035 867 -168 ------------------------------------------------------------------------------ (add/remove: 4/3 grow/shrink: 10/11 up/down: 113/-490) Total: -377 bytes
44 lines
971 B
C
44 lines
971 B
C
/* vi: set sw=4 ts=4: */
|
|
/*
|
|
* Utility routines.
|
|
*
|
|
* Copyright (C) 2007 Denis Vlasenko
|
|
*
|
|
* Licensed under GPL version 2, see file LICENSE in this tarball for details.
|
|
*/
|
|
|
|
#include "libbb.h"
|
|
|
|
#if ENABLE_MONOTONIC_SYSCALL
|
|
#include <sys/syscall.h>
|
|
|
|
/* libc has incredibly messy way of doing this,
|
|
* typically requiring -lrt. We just skip all this mess */
|
|
unsigned long long monotonic_us(void)
|
|
{
|
|
struct timespec ts;
|
|
if (syscall(__NR_clock_gettime, CLOCK_MONOTONIC, &ts))
|
|
bb_error_msg_and_die("clock_gettime(MONOTONIC) failed");
|
|
return ts.tv_sec * 1000000ULL + ts.tv_nsec/1000;
|
|
}
|
|
unsigned monotonic_sec(void)
|
|
{
|
|
struct timespec ts;
|
|
if (syscall(__NR_clock_gettime, CLOCK_MONOTONIC, &ts))
|
|
bb_error_msg_and_die("clock_gettime(MONOTONIC) failed");
|
|
return ts.tv_sec;
|
|
}
|
|
#else
|
|
unsigned long long monotonic_us(void)
|
|
{
|
|
struct timeval tv;
|
|
gettimeofday(&tv, NULL);
|
|
return tv.tv_sec * 1000000ULL + tv_usec;
|
|
}
|
|
|
|
unsigned monotonic_sec(void)
|
|
{
|
|
return time(NULL);
|
|
}
|
|
#endif
|