[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(¤t_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(¤t_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