Skip site navigation (1)Skip section navigation (2)
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>