]> granicus.if.org Git - strace/commit
Print microseconds/nanoseconds as non-negative
authorEugene Syromyatnikov <evgsyr@gmail.com>
Sun, 23 Apr 2017 03:57:03 +0000 (05:57 +0200)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 24 Apr 2017 23:14:57 +0000 (23:14 +0000)
commit9c8ec0a80f8312602826aed5e8fa5f5f6d775981
tree23e4e74eab609fd417f0b4b74d17afe12bd4e109
parent3277a2370ad53644c1b76c66abdda91d09d9107b
Print microseconds/nanoseconds as non-negative

Negative micro/nanoseconds values are treated as invalid by kernel
anyway, and in one case (timespec_valid in include/linux/time.h)
it is even checked by conversion to unsigned long.

* print_timespec.c (timespec_fmt): Change tv_sec format to %lld and
tv_nsec format to %llu.
(print_timespec_t): Cast tv_sec to long long and process tv_nsec with
zero_extend_signed_to_ull.
(sprint_timespec): Likewise.
* print_timeval.c (timeval_fmt): Change tv_sec format to %lld and
tv_usec format to %llu.
(print_timeval_t): Cast tv_sec to long long and process tv_nsec with
zero_extend_signed_to_ull.
(sprint_timeval, print_timeval32_t, sprint_timeval32): Likewise.
* defs.h (TIMESPEC_TEXT_BUFSIZE): Update.
* tests/adjtimex.c (main): Change tv_sec printing format to %lld, cast
it to long long; change tv_usec printing format to %llu, process it with
zero_extend_signed_to_ull.
* tests/clock_nanosleep.c (main): Change tv_sec printing format to %lld,
cast it to long long; change tv_nsec printing format to %llu, process it
with zero_extend_signed_to_ull.
* tests/clock_xettime.c (main): Likewise.
* tests/futex.c (main): Likewise.
* tests/futimesat.c (print_tv): Likewise.
* tests/getrusage.c (invoke_print): Likewise.
* tests/mq_sendrecv.c (do_send, do_recv, main): Likewise.
* tests/nanosleep.c (main): Likewise.
* tests/pselect6.c (main): Likewise.
* tests/restart_syscall.c (main): Likewise.
* tests/rt_sigtimedwait.c (iterate, main): Likewise.
* tests/sched_rr_get_interval.c (main): Likewise.
* tests/semop.c (main): Likewise.
* tests/timer_xettime.c (main): Likewise.
* tests/timerfd_xettime.c (main): Likewise.
* tests/waitid.c (main): Likewise.
* tests/xetitimer.c (main): Likewise.
* tests/xettimeofday.c (main): Likewise.
* tests/xselect.c (main): Likewise.
* tests/xutimes.c (print_tv): Likewise.
* tests/wait4.c (sprint_rusage): Likewise.
* tests/waitid.c (sprint_rusage): Likewise.
* tests/utimensat.c (print_ts): Likewise.
(main): Add check for higher bits of tv_sec/tv_nsec.

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
25 files changed:
defs.h
print_timespec.c
print_timeval.c
tests/adjtimex.c
tests/clock_nanosleep.c
tests/clock_xettime.c
tests/futex.c
tests/futimesat.c
tests/getrusage.c
tests/mq_sendrecv.c
tests/nanosleep.c
tests/pselect6.c
tests/restart_syscall.c
tests/rt_sigtimedwait.c
tests/sched_rr_get_interval.c
tests/semop.c
tests/timer_xettime.c
tests/timerfd_xettime.c
tests/utimensat.c
tests/wait4.c
tests/waitid.c
tests/xetitimer.c
tests/xettimeofday.c
tests/xselect.c
tests/xutimes.c