[Midnightbsd-cvs] src [7821] add walltimestamp support to DTrace.

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Tue Sep 6 19:52:49 EDT 2016


Revision: 7821
          http://svnweb.midnightbsd.org/src/?rev=7821
Author:   laffer1
Date:     2016-09-06 19:52:48 -0400 (Tue, 06 Sep 2016)
Log Message:
-----------
add walltimestamp support to DTrace.

Modified Paths:
--------------
    trunk/sys/cddl/dev/dtrace/amd64/dtrace_subr.c
    trunk/sys/cddl/dev/dtrace/i386/dtrace_subr.c
    trunk/sys/kern/kern_tc.c

Property Changed:
----------------
    trunk/sys/cddl/dev/dtrace/amd64/dis_tables.c
    trunk/sys/cddl/dev/dtrace/amd64/dis_tables.h
    trunk/sys/cddl/dev/dtrace/amd64/dtrace_asm.S
    trunk/sys/cddl/dev/dtrace/amd64/dtrace_isa.c
    trunk/sys/cddl/dev/dtrace/amd64/dtrace_subr.c
    trunk/sys/cddl/dev/dtrace/i386/dis_tables.c
    trunk/sys/cddl/dev/dtrace/i386/dis_tables.h
    trunk/sys/cddl/dev/dtrace/i386/dtrace_asm.S
    trunk/sys/cddl/dev/dtrace/i386/dtrace_isa.c
    trunk/sys/cddl/dev/dtrace/i386/dtrace_subr.c

Index: trunk/sys/cddl/dev/dtrace/amd64/dis_tables.c
===================================================================
--- trunk/sys/cddl/dev/dtrace/amd64/dis_tables.c	2016-09-06 23:50:03 UTC (rev 7820)
+++ trunk/sys/cddl/dev/dtrace/amd64/dis_tables.c	2016-09-06 23:52:48 UTC (rev 7821)

Property changes on: trunk/sys/cddl/dev/dtrace/amd64/dis_tables.c
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.2
\ No newline at end of property
Index: trunk/sys/cddl/dev/dtrace/amd64/dis_tables.h
===================================================================
--- trunk/sys/cddl/dev/dtrace/amd64/dis_tables.h	2016-09-06 23:50:03 UTC (rev 7820)
+++ trunk/sys/cddl/dev/dtrace/amd64/dis_tables.h	2016-09-06 23:52:48 UTC (rev 7821)

Property changes on: trunk/sys/cddl/dev/dtrace/amd64/dis_tables.h
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.2
\ No newline at end of property
Index: trunk/sys/cddl/dev/dtrace/amd64/dtrace_asm.S
===================================================================
--- trunk/sys/cddl/dev/dtrace/amd64/dtrace_asm.S	2016-09-06 23:50:03 UTC (rev 7820)
+++ trunk/sys/cddl/dev/dtrace/amd64/dtrace_asm.S	2016-09-06 23:52:48 UTC (rev 7821)

Property changes on: trunk/sys/cddl/dev/dtrace/amd64/dtrace_asm.S
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.2
\ No newline at end of property
Index: trunk/sys/cddl/dev/dtrace/amd64/dtrace_isa.c
===================================================================
--- trunk/sys/cddl/dev/dtrace/amd64/dtrace_isa.c	2016-09-06 23:50:03 UTC (rev 7820)
+++ trunk/sys/cddl/dev/dtrace/amd64/dtrace_isa.c	2016-09-06 23:52:48 UTC (rev 7821)

Property changes on: trunk/sys/cddl/dev/dtrace/amd64/dtrace_isa.c
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.2
\ No newline at end of property
Modified: trunk/sys/cddl/dev/dtrace/amd64/dtrace_subr.c
===================================================================
--- trunk/sys/cddl/dev/dtrace/amd64/dtrace_subr.c	2016-09-06 23:50:03 UTC (rev 7820)
+++ trunk/sys/cddl/dev/dtrace/amd64/dtrace_subr.c	2016-09-06 23:52:48 UTC (rev 7821)
@@ -43,6 +43,8 @@
 extern uintptr_t 	dtrace_in_probe_addr;
 extern int		dtrace_in_probe;
 
+extern void dtrace_getnanotime(struct timespec *tsp);
+
 int dtrace_invop(uintptr_t, uintptr_t *, uintptr_t);
 
 typedef struct dtrace_invop_hdlr {
@@ -456,8 +458,11 @@
 uint64_t
 dtrace_gethrestime(void)
 {
-	printf("%s(%d): XXX\n",__func__,__LINE__);
-	return (0);
+	struct timespec current_time;
+
+	dtrace_getnanotime(&current_time);
+
+	return (current_time.tv_sec * 1000000000ULL + current_time.tv_nsec);
 }
 
 /* Function to handle DTrace traps during probes. See amd64/amd64/trap.c */


Property changes on: trunk/sys/cddl/dev/dtrace/amd64/dtrace_subr.c
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.2
\ No newline at end of property
Index: trunk/sys/cddl/dev/dtrace/i386/dis_tables.c
===================================================================
--- trunk/sys/cddl/dev/dtrace/i386/dis_tables.c	2016-09-06 23:50:03 UTC (rev 7820)
+++ trunk/sys/cddl/dev/dtrace/i386/dis_tables.c	2016-09-06 23:52:48 UTC (rev 7821)

Property changes on: trunk/sys/cddl/dev/dtrace/i386/dis_tables.c
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.2
\ No newline at end of property
Index: trunk/sys/cddl/dev/dtrace/i386/dis_tables.h
===================================================================
--- trunk/sys/cddl/dev/dtrace/i386/dis_tables.h	2016-09-06 23:50:03 UTC (rev 7820)
+++ trunk/sys/cddl/dev/dtrace/i386/dis_tables.h	2016-09-06 23:52:48 UTC (rev 7821)

Property changes on: trunk/sys/cddl/dev/dtrace/i386/dis_tables.h
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.2
\ No newline at end of property
Index: trunk/sys/cddl/dev/dtrace/i386/dtrace_asm.S
===================================================================
--- trunk/sys/cddl/dev/dtrace/i386/dtrace_asm.S	2016-09-06 23:50:03 UTC (rev 7820)
+++ trunk/sys/cddl/dev/dtrace/i386/dtrace_asm.S	2016-09-06 23:52:48 UTC (rev 7821)

Property changes on: trunk/sys/cddl/dev/dtrace/i386/dtrace_asm.S
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.2
\ No newline at end of property
Index: trunk/sys/cddl/dev/dtrace/i386/dtrace_isa.c
===================================================================
--- trunk/sys/cddl/dev/dtrace/i386/dtrace_isa.c	2016-09-06 23:50:03 UTC (rev 7820)
+++ trunk/sys/cddl/dev/dtrace/i386/dtrace_isa.c	2016-09-06 23:52:48 UTC (rev 7821)

Property changes on: trunk/sys/cddl/dev/dtrace/i386/dtrace_isa.c
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.2
\ No newline at end of property
Modified: trunk/sys/cddl/dev/dtrace/i386/dtrace_subr.c
===================================================================
--- trunk/sys/cddl/dev/dtrace/i386/dtrace_subr.c	2016-09-06 23:50:03 UTC (rev 7820)
+++ trunk/sys/cddl/dev/dtrace/i386/dtrace_subr.c	2016-09-06 23:52:48 UTC (rev 7821)
@@ -45,6 +45,8 @@
 extern uintptr_t 	dtrace_in_probe_addr;
 extern int		dtrace_in_probe;
 
+extern void dtrace_getnanotime(struct timespec *tsp);
+
 int dtrace_invop(uintptr_t, uintptr_t *, uintptr_t);
 
 typedef struct dtrace_invop_hdlr {
@@ -457,8 +459,11 @@
 uint64_t
 dtrace_gethrestime(void)
 {
-	printf("%s(%d): XXX\n",__func__,__LINE__);
-	return (0);
+	struct timespec current_time;
+
+	dtrace_getnanotime(&current_time);
+
+	return (current_time.tv_sec * 1000000000ULL + current_time.tv_nsec);
 }
 
 /* Function to handle DTrace traps during probes. See i386/i386/trap.c */


Property changes on: trunk/sys/cddl/dev/dtrace/i386/dtrace_subr.c
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.2
\ No newline at end of property
Modified: trunk/sys/kern/kern_tc.c
===================================================================
--- trunk/sys/kern/kern_tc.c	2016-09-06 23:50:03 UTC (rev 7820)
+++ trunk/sys/kern/kern_tc.c	2016-09-06 23:52:48 UTC (rev 7821)
@@ -109,6 +109,8 @@
 static void tc_windup(void);
 static void cpu_tick_calibrate(int);
 
+void dtrace_getnanotime(struct timespec *tsp);
+
 static int
 sysctl_kern_boottime(SYSCTL_HANDLER_ARGS)
 {
@@ -302,6 +304,24 @@
 }
 
 /*
+ * This is a clone of getnanotime and used for walltimestamps.
+ * The dtrace_ prefix prevents fbt from creating probes for
+ * it so walltimestamp can be safely used in all fbt probes.
+ */
+void
+dtrace_getnanotime(struct timespec *tsp)
+{
+	struct timehands *th;
+	u_int gen;
+
+	do {
+		th = timehands;
+		gen = th->th_generation;
+		*tsp = th->th_nanotime;
+	} while (gen == 0 || gen != th->th_generation);
+}
+
+/*
  * Initialize a new timecounter and possibly use it.
  */
 void



More information about the Midnightbsd-cvs mailing list