Print struct timeval consistently
Use print_struct_timeval interface to print struct timeval. * print_timeval.c (print_struct_timeval): New mpers printer. * print_timex.c (print_timex): Use it. * printrusage.c (printrusage): Likewise. * v4l2.c (print_v4l2_buffer): Likewise. * tests/getrusage.c (main): Print tv_sec and tv_usec fields as signed. * tests/waitid.c (sprint_rusage): Likewise. Suggested-by: Eugene Syromyatnikov <evgsyr@gmail.com>
This commit is contained in:
		| @@ -41,6 +41,11 @@ print_timeval_t(const timeval_t *t) | ||||
| 	tprintf(timeval_fmt, (intmax_t) t->tv_sec, (intmax_t) t->tv_usec); | ||||
| } | ||||
|  | ||||
| MPERS_PRINTER_DECL(void, print_struct_timeval, const void *arg) | ||||
| { | ||||
| 	print_timeval_t(arg); | ||||
| } | ||||
|  | ||||
| MPERS_PRINTER_DECL(void, print_timeval, | ||||
| 		   struct tcb *tcp, const long addr) | ||||
| { | ||||
|   | ||||
| @@ -53,11 +53,10 @@ MPERS_PRINTER_DECL(int, print_timex, struct tcb *tcp, const long addr) | ||||
| 		(intmax_t) tx.offset, (intmax_t) tx.freq, | ||||
| 		(uintmax_t) tx.maxerror, (uintmax_t) tx.esterror); | ||||
| 	printflags(adjtimex_status, tx.status, "STA_???"); | ||||
| 	tprintf(", constant=%jd, precision=%ju, tolerance=%jd", | ||||
| 	tprintf(", constant=%jd, precision=%ju, tolerance=%jd, time=", | ||||
| 		(intmax_t) tx.constant, (uintmax_t) tx.precision, | ||||
| 		(intmax_t) tx.tolerance); | ||||
| 	tprintf(", time={tv_sec=%jd, tv_usec=%jd}", | ||||
| 		(intmax_t) tx.time.tv_sec, (intmax_t) tx.time.tv_usec); | ||||
| 	MPERS_FUNC_NAME(print_struct_timeval)(&tx.time); | ||||
| 	tprintf(", tick=%jd, ppsfreq=%jd, jitter=%jd", | ||||
| 		(intmax_t) tx.tick, (intmax_t) tx.ppsfreq, (intmax_t) tx.jitter); | ||||
| 	tprintf(", shift=%d, stabil=%jd, jitcnt=%jd", | ||||
|   | ||||
| @@ -44,30 +44,32 @@ MPERS_PRINTER_DECL(void, printrusage, struct tcb *tcp, long addr) | ||||
| 	if (umove_or_printaddr(tcp, addr, &ru)) | ||||
| 		return; | ||||
|  | ||||
| 	tprintf("{ru_utime={tv_sec=%llu, tv_usec=%llu}, " | ||||
| 		"ru_stime={tv_sec=%llu, tv_usec=%llu}, ", | ||||
| 		zero_extend_signed_to_ull(ru.ru_utime.tv_sec), | ||||
| 		zero_extend_signed_to_ull(ru.ru_utime.tv_usec), | ||||
| 		zero_extend_signed_to_ull(ru.ru_stime.tv_sec), | ||||
| 		zero_extend_signed_to_ull(ru.ru_stime.tv_usec)); | ||||
| 	tprints("{ru_utime="); | ||||
| 	MPERS_FUNC_NAME(print_struct_timeval)(&ru.ru_utime); | ||||
| 	tprints(", ru_stime="); | ||||
| 	MPERS_FUNC_NAME(print_struct_timeval)(&ru.ru_stime); | ||||
| 	if (abbrev(tcp)) | ||||
| 		tprints("...}"); | ||||
| 		tprints(", ..."); | ||||
| 	else { | ||||
| 		tprintf("ru_maxrss=%llu, ", zero_extend_signed_to_ull(ru.ru_maxrss)); | ||||
| 		tprintf("ru_ixrss=%llu, ", zero_extend_signed_to_ull(ru.ru_ixrss)); | ||||
| 		tprintf("ru_idrss=%llu, ", zero_extend_signed_to_ull(ru.ru_idrss)); | ||||
| 		tprintf("ru_isrss=%llu, ", zero_extend_signed_to_ull(ru.ru_isrss)); | ||||
| 		tprintf("ru_minflt=%llu, ", zero_extend_signed_to_ull(ru.ru_minflt)); | ||||
| 		tprintf("ru_majflt=%llu, ", zero_extend_signed_to_ull(ru.ru_majflt)); | ||||
| 		tprintf("ru_nswap=%llu, ", zero_extend_signed_to_ull(ru.ru_nswap)); | ||||
| 		tprintf("ru_inblock=%llu, ", zero_extend_signed_to_ull(ru.ru_inblock)); | ||||
| 		tprintf("ru_oublock=%llu, ", zero_extend_signed_to_ull(ru.ru_oublock)); | ||||
| 		tprintf("ru_msgsnd=%llu, ", zero_extend_signed_to_ull(ru.ru_msgsnd)); | ||||
| 		tprintf("ru_msgrcv=%llu, ", zero_extend_signed_to_ull(ru.ru_msgrcv)); | ||||
| 		tprintf("ru_nsignals=%llu, ", zero_extend_signed_to_ull(ru.ru_nsignals)); | ||||
| 		tprintf("ru_nvcsw=%llu, ", zero_extend_signed_to_ull(ru.ru_nvcsw)); | ||||
| 		tprintf("ru_nivcsw=%llu}", zero_extend_signed_to_ull(ru.ru_nivcsw)); | ||||
| #define PRINT_RUSAGE_MEMBER(member) \ | ||||
| 		tprintf(", " #member "=%llu", zero_extend_signed_to_ull(ru.member)) | ||||
| 		PRINT_RUSAGE_MEMBER(ru_maxrss); | ||||
| 		PRINT_RUSAGE_MEMBER(ru_ixrss); | ||||
| 		PRINT_RUSAGE_MEMBER(ru_idrss); | ||||
| 		PRINT_RUSAGE_MEMBER(ru_isrss); | ||||
| 		PRINT_RUSAGE_MEMBER(ru_minflt); | ||||
| 		PRINT_RUSAGE_MEMBER(ru_majflt); | ||||
| 		PRINT_RUSAGE_MEMBER(ru_nswap); | ||||
| 		PRINT_RUSAGE_MEMBER(ru_inblock); | ||||
| 		PRINT_RUSAGE_MEMBER(ru_oublock); | ||||
| 		PRINT_RUSAGE_MEMBER(ru_msgsnd); | ||||
| 		PRINT_RUSAGE_MEMBER(ru_msgrcv); | ||||
| 		PRINT_RUSAGE_MEMBER(ru_nsignals); | ||||
| 		PRINT_RUSAGE_MEMBER(ru_nvcsw); | ||||
| 		PRINT_RUSAGE_MEMBER(ru_nivcsw); | ||||
| #undef PRINT_RUSAGE_MEMBER | ||||
| 	} | ||||
| 	tprints("}"); | ||||
| } | ||||
|  | ||||
| #ifdef ALPHA | ||||
|   | ||||
| @@ -41,16 +41,16 @@ main(void) | ||||
| { | ||||
| 	struct rusage *const usage = tail_alloc(sizeof(struct rusage)); | ||||
| 	int rc = syscall(__NR_getrusage, RUSAGE_SELF, usage); | ||||
| 	printf("getrusage(RUSAGE_SELF, {ru_utime={tv_sec=%ju, tv_usec=%ju}" | ||||
| 	       ", ru_stime={tv_sec=%ju, tv_usec=%ju}, ru_maxrss=%lu" | ||||
| 	printf("getrusage(RUSAGE_SELF, {ru_utime={tv_sec=%jd, tv_usec=%jd}" | ||||
| 	       ", ru_stime={tv_sec=%jd, tv_usec=%jd}, ru_maxrss=%lu" | ||||
| 	       ", ru_ixrss=%lu, ru_idrss=%lu, ru_isrss=%lu, ru_minflt=%lu" | ||||
| 	       ", ru_majflt=%lu, ru_nswap=%lu, ru_inblock=%lu" | ||||
| 	       ", ru_oublock=%lu, ru_msgsnd=%lu, ru_msgrcv=%lu" | ||||
| 	       ", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %d\n", | ||||
| 	       (uintmax_t) usage->ru_utime.tv_sec, | ||||
| 	       (uintmax_t) usage->ru_utime.tv_usec, | ||||
| 	       (uintmax_t) usage->ru_stime.tv_sec, | ||||
| 	       (uintmax_t) usage->ru_stime.tv_usec, | ||||
| 	       (intmax_t) usage->ru_utime.tv_sec, | ||||
| 	       (intmax_t) usage->ru_utime.tv_usec, | ||||
| 	       (intmax_t) usage->ru_stime.tv_sec, | ||||
| 	       (intmax_t) usage->ru_stime.tv_usec, | ||||
| 	       usage->ru_maxrss, usage->ru_ixrss, usage->ru_idrss, | ||||
| 	       usage->ru_isrss, usage->ru_minflt, usage->ru_majflt, | ||||
| 	       usage->ru_nswap, usage->ru_inblock, usage->ru_oublock, | ||||
|   | ||||
| @@ -42,8 +42,8 @@ sprint_rusage(const struct rusage *const ru) | ||||
| { | ||||
| 	static char buf[1024]; | ||||
| 	snprintf(buf, sizeof(buf), | ||||
| 		 "{ru_utime={tv_sec=%llu, tv_usec=%llu}" | ||||
| 		 ", ru_stime={tv_sec=%llu, tv_usec=%llu}" | ||||
| 		 "{ru_utime={tv_sec=%lld, tv_usec=%lld}" | ||||
| 		 ", ru_stime={tv_sec=%lld, tv_usec=%lld}" | ||||
| #if VERBOSE | ||||
| 		 ", ru_maxrss=%llu" | ||||
| 		 ", ru_ixrss=%llu" | ||||
| @@ -62,10 +62,10 @@ sprint_rusage(const struct rusage *const ru) | ||||
| #else | ||||
| 		 ", ...}" | ||||
| #endif | ||||
| 		 , zero_extend_signed_to_ull(ru->ru_utime.tv_sec) | ||||
| 		 , zero_extend_signed_to_ull(ru->ru_utime.tv_usec) | ||||
| 		 , zero_extend_signed_to_ull(ru->ru_stime.tv_sec) | ||||
| 		 , zero_extend_signed_to_ull(ru->ru_stime.tv_usec) | ||||
| 		 , (long long) ru->ru_utime.tv_sec | ||||
| 		 , (long long) ru->ru_utime.tv_usec | ||||
| 		 , (long long) ru->ru_stime.tv_sec | ||||
| 		 , (long long) ru->ru_stime.tv_usec | ||||
| #if VERBOSE | ||||
| 		 , zero_extend_signed_to_ull(ru->ru_maxrss) | ||||
| 		 , zero_extend_signed_to_ull(ru->ru_ixrss) | ||||
|   | ||||
							
								
								
									
										8
									
								
								v4l2.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								v4l2.c
									
									
									
									
									
								
							| @@ -366,10 +366,10 @@ print_v4l2_buffer(struct tcb *tcp, const unsigned int code, const long arg) | ||||
| 			tprintf(", length=%u, bytesused=%u, flags=", | ||||
| 				b.length, b.bytesused); | ||||
| 			printflags(v4l2_buf_flags, b.flags, "V4L2_BUF_FLAG_???"); | ||||
| 			if (code == VIDIOC_DQBUF) | ||||
| 				tprintf(", timestamp = {%ju.%06ju}", | ||||
| 					(uintmax_t)b.timestamp.tv_sec, | ||||
| 					(uintmax_t)b.timestamp.tv_usec); | ||||
| 			if (code == VIDIOC_DQBUF) { | ||||
| 				tprints(", timestamp = "); | ||||
| 				MPERS_FUNC_NAME(print_struct_timeval)(&b.timestamp); | ||||
| 			} | ||||
| 			tprints(", ..."); | ||||
| 		} | ||||
| 		tprints("}"); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user