Date: Mon, 16 Jul 2007 13:10:46 +0200 From: Matthieu Michaud <matthieu@epita.info> To: stable@freebsd.org Subject: make struct timeval posix compliant ? Message-ID: <1397BA88-CC55-4585-86CB-3BD08FBABEF5@epita.info>
next in thread | raw e-mail | index | archive | help
--Apple-Mail-3-118616172 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed hello, on RELENG_6 sys/_timeval.h defines (struct timeval).tv_sec as long. posix wants it to be a time_t. this seems to have been corrected a long time ago in HEAD (see [1]). i took time to 'make universe' in a RELENG_6 tree with the HEAD src/sys/sys/_timeval.h. i've found similar breakage. here's a patch which correct it the same way. this sounds like an idea with pros (conformance) and cons (abi change). anyone interested in those changes ? [1] http://docs.FreeBSD.org/cgi/mid.cgi?200512242222.jBOMMHRA056613 --Apple-Mail-3-118616172 Content-Transfer-Encoding: 7bit Content-Type: application/octet-stream; x-unix-mode=0600; name=struct_timeval.diff Content-Disposition: attachment; filename=struct_timeval.diff --- src/sys/dev/acpica/Osd/OsdSynch.c.orig 2007-07-12 20:54:12.000000000 +0200 +++ src/sys/dev/acpica/Osd/OsdSynch.c 2007-07-12 21:11:15.000000000 +0200 @@ -257,8 +257,8 @@ tmo = 1; if (acpi_semaphore_debug) { - printf("%s: Wakeup timeleft(%lu, %lu), tmo %u, sem %p, thread %d\n", - __func__, timelefttv.tv_sec, timelefttv.tv_usec, tmo, as, + printf("%s: Wakeup timeleft(%jd, %lu), tmo %u, sem %p, thread %d\n", + __func__, (intmax_t)timelefttv.tv_sec, timelefttv.tv_usec, tmo, as, AcpiOsGetThreadId()); } } --- src/sys/sys/_timeval.h.orig 2006-06-24 01:41:05.000000000 +0200 +++ src/sys/sys/_timeval.h 2007-07-12 20:37:55.000000000 +0200 @@ -45,11 +45,7 @@ * Structure returned by gettimeofday(2) system call, and used in other calls. */ struct timeval { -#ifdef __arm__ time_t tv_sec; -#else - long tv_sec; /* seconds (XXX should be time_t) */ -#endif suseconds_t tv_usec; /* and microseconds */ }; --- sys/netatm/atm_sys.h.orig Fri Jul 13 14:20:29 2007 +++ sys/netatm/atm_sys.h Fri Jul 13 14:21:18 2007 @@ -186,7 +186,7 @@ delta.tv_sec--; \ delta.tv_usec += 1000000; \ } \ - printf("%3ld.%6ld: ", delta.tv_sec, delta.tv_usec); + printf("%3jd.%6ld: ", (intmax_t)delta.tv_sec, delta.tv_usec); #define ATM_DEBUG0(f) if (atm_debug) {ATM_TIME; printf(f);} #define ATM_DEBUGN0(f) if (atm_debug) {printf(f);} --- src/usr.bin/netstat/mroute.c.orig Fri Jul 13 11:52:41 2007 +++ src/usr.bin/netstat/mroute.c Fri Jul 13 18:33:06 2007 @@ -64,6 +64,7 @@ #include <err.h> #include <stdio.h> #include <stdlib.h> +#include <stdint.h> #include "netstat.h" static void print_bw_meter(struct bw_meter *bw_meter, int *banner_printed); @@ -214,10 +215,9 @@ sprintf(s2, "%llu", bw_meter->bm_measured.b_bytes); else sprintf(s2, "?"); - sprintf(s0, "%lu.%lu|%s|%s", - bw_meter->bm_start_time.tv_sec, + sprintf(s0, "%ju.%lu|%s|%s", + (intmax_t)bw_meter->bm_start_time.tv_sec, bw_meter->bm_start_time.tv_usec, - s1, s2); printf(" %-30s", s0); @@ -238,8 +238,8 @@ sprintf(s2, "%llu", bw_meter->bm_threshold.b_bytes); else sprintf(s2, "?"); - sprintf(s0, "%lu.%lu|%s|%s", - bw_meter->bm_threshold.b_time.tv_sec, + sprintf(s0, "%ju.%lu|%s|%s", + (intmax_t)bw_meter->bm_threshold.b_time.tv_sec, bw_meter->bm_threshold.b_time.tv_usec, s1, s2); printf(" %-30s", s0); @@ -249,11 +249,11 @@ &bw_meter->bm_threshold.b_time, &end); if (timercmp(&now, &end, <=)) { timersub(&end, &now, &delta); - sprintf(s3, "%lu.%lu", delta.tv_sec, delta.tv_usec); + sprintf(s3, "%ju.%lu", (intmax_t)delta.tv_sec, delta.tv_usec); } else { /* Negative time */ timersub(&now, &end, &delta); - sprintf(s3, "-%lu.%lu", delta.tv_sec, delta.tv_usec); + sprintf(s3, "-%ju.%lu", (intmax_t)delta.tv_sec, delta.tv_usec); } printf(" %s", s3); --- sys/contrib/pf/net/pf_norm.c.orig Fri Jul 13 12:49:16 2007 +++ sys/contrib/pf/net/pf_norm.c Fri Jul 13 12:51:27 2007 @@ -1839,8 +1839,8 @@ SEQ_LT(tsecr, dst->scrub->pfss_tsval0)? '3' : ' ')); #ifdef __FreeBSD__ DPFPRINTF((" tsval: %u tsecr: %u +ticks: %u " - "idle: %lus %lums\n", - tsval, tsecr, tsval_from_last, delta_ts.tv_sec, + "idle: %jus %lums\n", + tsval, tsecr, tsval_from_last, (intmax_t)delta_ts.tv_sec, delta_ts.tv_usec / 1000)); DPFPRINTF((" src->tsval: %u tsecr: %u\n", src->scrub->pfss_tsval, src->scrub->pfss_tsecr)); --- src/sys/fs/procfs/procfs_status.c.orig 2005-03-15 12:05:11.000000000 +0100 +++ src/sys/fs/procfs/procfs_status.c 2007-07-12 20:32:46.000000000 +0200 @@ -132,10 +132,10 @@ calcru(p, &ut, &st); start = p->p_stats->p_start; timevaladd(&start, &boottime); - sbuf_printf(sb, " %ld,%ld %ld,%ld %ld,%ld", - start.tv_sec, start.tv_usec, - ut.tv_sec, ut.tv_usec, - st.tv_sec, st.tv_usec); + sbuf_printf(sb, " %jd,%ld %jd,%ld %jd,%ld", + (intmax_t)start.tv_sec, start.tv_usec, + (intmax_t)ut.tv_sec, ut.tv_usec, + (intmax_t)st.tv_sec, st.tv_usec); } else { sbuf_printf(sb, " -1,-1 -1,-1 -1,-1"); } --- src/sys/dev/firewire/sbp.c.orig 2007-06-17 12:46:19.000000000 +0200 +++ src/sys/dev/firewire/sbp.c 2007-07-12 20:28:18.000000000 +0200 @@ -699,8 +699,8 @@ if (t.tv_sec >= 0 && t.tv_usec > 0) ticks = (t.tv_sec * 1000 + t.tv_usec / 1000) * hz / 1000; SBP_DEBUG(0) - printf("%s: sec = %ld usec = %ld ticks = %d\n", __func__, - t.tv_sec, t.tv_usec, ticks); + printf("%s: sec = %jd usec = %ld ticks = %d\n", __func__, + (intmax_t)t.tv_sec, t.tv_usec, ticks); END_DEBUG callout_reset(&sdev->login_callout, ticks, sbp_login_callout, (void *)(sdev)); --Apple-Mail-3-118616172--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1397BA88-CC55-4585-86CB-3BD08FBABEF5>