> From: "Ted Unangst" <[email protected]>
> Date: Tue, 31 May 2016 21:46:16 -0400
>
> Small timespecs print funny:
>
> 57686 chrome CALL clock_gettime(CLOCK_MONOTONIC,0x7f7fffff0028)
> 57686 chrome STRU struct timespec { 15411<"Dec 31 23:16:51
> 1969">.584609082 }
> 57686 chrome RET clock_gettime 0
> 57686 chrome CALL clock_gettime(CLOCK_MONOTONIC,0x7f7ffffeff48)
> 57686 chrome STRU struct timespec { 15411<"Dec 31 23:16:51
> 1969">.584623819 }
> 57686 chrome RET clock_gettime 0
>
> Here's a simple heuristic which makes this output a little easier to read,
> without the meaningless 1969 dates.
>
> 57686 chrome CALL clock_gettime(CLOCK_MONOTONIC,0x7f7fffff0028)
> 57686 chrome STRU struct timespec { 15411.584609082 }
> 57686 chrome RET clock_gettime 0
> 57686 chrome CALL clock_gettime(CLOCK_MONOTONIC,0x7f7ffffeff48)
> 57686 chrome STRU struct timespec { 15411.584623819 }
> 57686 chrome RET clock_gettime 0
I sympathise with the idea, but your implementation would still print
"funny" times if your machine had been up for more than a day.
> Index: ktrstruct.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/kdump/ktrstruct.c,v
> retrieving revision 1.19
> diff -u -p -r1.19 ktrstruct.c
> --- ktrstruct.c 22 May 2016 23:02:28 -0000 1.19
> +++ ktrstruct.c 1 Jun 2016 01:41:59 -0000
> @@ -147,7 +147,8 @@ print_time(time_t t, int relative, int h
> } else
> printf("%jd", (intmax_t)t);
>
> - if (!relative) {
> + /* small timespecs are probably relative */
> + if (!relative && t > 86400) {
> tm = localtime(&t);
> if (tm != NULL) {
> (void)strftime(timestr, sizeof(timestr), TIME_FORMAT,
>
>