svn commit: r259878 - head/lib/libdevstat

Sergey Kandaurov pluknet at FreeBSD.org
Wed Dec 25 17:11:50 UTC 2013


Author: pluknet
Date: Wed Dec 25 17:11:49 2013
New Revision: 259878
URL: http://svnweb.freebsd.org/changeset/base/259878

Log:
  For vmcore, calculate time relative to device creation upon time_uptime.
  Previously it used a clock from live kernel.
  
  MFC after:	2 weeks

Modified:
  head/lib/libdevstat/devstat.c

Modified: head/lib/libdevstat/devstat.c
==============================================================================
--- head/lib/libdevstat/devstat.c	Wed Dec 25 16:58:42 2013	(r259877)
+++ head/lib/libdevstat/devstat.c	Wed Dec 25 17:11:49 2013	(r259878)
@@ -150,7 +150,9 @@ static const char *namelist[] = {
 	"_devstat_version",
 #define X_DEVICE_STATQ	3
 	"_device_statq",
-#define X_END		4
+#define X_TIME_UPTIME	4
+	"_time_uptime",
+#define X_END		5
 };
 
 /*
@@ -349,10 +351,10 @@ devstat_getdevs(kvm_t *kd, struct statin
 	oldnumdevs = dinfo->numdevs;
 	oldgeneration = dinfo->generation;
 
-	clock_gettime(CLOCK_MONOTONIC, &ts);
-	stats->snap_time = ts.tv_sec + ts.tv_nsec * 1e-9;
-
 	if (kd == NULL) {
+		clock_gettime(CLOCK_MONOTONIC, &ts);
+		stats->snap_time = ts.tv_sec + ts.tv_nsec * 1e-9;
+
 		/* If this is our first time through, mem_ptr will be null. */
 		if (dinfo->mem_ptr == NULL) {
 			/*
@@ -433,6 +435,11 @@ devstat_getdevs(kvm_t *kd, struct statin
 		} 
 
 	} else {
+		if (KREADNL(kd, X_TIME_UPTIME, ts.tv_sec) == -1)
+			return(-1);
+		else
+			stats->snap_time = ts.tv_sec;
+
 		/* 
 		 * This is of course non-atomic, but since we are working
 		 * on a core dump, the generation is unlikely to change


More information about the svn-src-all mailing list