Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F145122727
D35851.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D35851.diff
View Options
Index: sys/kern/kern_ktrace.c
===================================================================
--- sys/kern/kern_ktrace.c
+++ sys/kern/kern_ktrace.c
@@ -321,13 +321,19 @@
req->ktr_header.ktr_type |= KTR_DROP;
p->p_traceflag &= ~KTRFAC_DROP;
}
- mtx_unlock(&ktrace_mtx);
- nanotime(&req->ktr_header.ktr_time);
- req->ktr_header.ktr_type |= KTR_VERSIONED;
+ if ((p->p_traceflag & KTRFAC_VERSIONED) != 0) {
+ mtx_unlock(&ktrace_mtx);
+ nanotime(&req->ktr_header.ktr_time);
+ req->ktr_header.ktr_type |= KTR_VERSIONED;
+ req->ktr_header.ktr_version = KTR_VERSION1;
+ req->ktr_header.ktr_cpu = PCPU_GET(cpuid);
+ } else {
+ mtx_unlock(&ktrace_mtx);
+ microtime((struct timeval *)&req->ktr_header.ktr_time);
+ req->ktr_header.ktr_version = KTR_VERSION0;
+ }
req->ktr_header.ktr_pid = p->p_pid;
req->ktr_header.ktr_tid = td->td_tid;
- req->ktr_header.ktr_cpu = PCPU_GET(cpuid);
- req->ktr_header.ktr_version = KTR_VERSION1;
bcopy(td->td_name, req->ktr_header.ktr_comm,
sizeof(req->ktr_header.ktr_comm));
req->ktr_buffer = NULL;
@@ -1214,6 +1220,8 @@
p->p_traceflag |= facs;
if (priv_check(td, PRIV_KTRACE) == 0)
p->p_traceflag |= KTRFAC_ROOT;
+ if (p->p_osrel > P_OSREL_KTRACE_VERSIONED)
+ p->p_traceflag |= KTRFAC_VERSIONED;
} else {
/* KTROP_CLEAR */
if (((p->p_traceflag &= ~facs) & KTRFAC_MASK) == 0)
@@ -1274,6 +1282,7 @@
struct iovec aiov[3];
struct mount *mp;
off_t lim;
+ ssize_t kthsz;
int datalen, buflen;
int error;
@@ -1304,6 +1313,10 @@
mtx_unlock(&ktrace_mtx);
kth = &req->ktr_header;
+ if (kth->ktr_version == KTR_VERSION0)
+ kthsz = sizeof(struct ktr_header_v0);
+ else
+ kthsz = sizeof(struct ktr_header);
KASSERT(((u_short)kth->ktr_type & ~KTR_TYPE) < nitems(data_lengths),
("data_lengths array overflow"));
datalen = data_lengths[(u_short)kth->ktr_type & ~KTR_TYPE];
@@ -1313,8 +1326,8 @@
auio.uio_segflg = UIO_SYSSPACE;
auio.uio_rw = UIO_WRITE;
aiov[0].iov_base = (caddr_t)kth;
- aiov[0].iov_len = sizeof(struct ktr_header);
- auio.uio_resid = sizeof(struct ktr_header);
+ aiov[0].iov_len = kthsz;
+ auio.uio_resid = kthsz;
auio.uio_iovcnt = 1;
auio.uio_td = td;
if (datalen != 0) {
Index: sys/sys/ktrace.h
===================================================================
--- sys/sys/ktrace.h
+++ sys/sys/ktrace.h
@@ -285,6 +285,10 @@
#define KTRFAC_ROOT 0x80000000 /* root set this trace */
#define KTRFAC_INHERIT 0x40000000 /* pass trace flags to children */
#define KTRFAC_DROP 0x20000000 /* last event was dropped */
+/*
+ * Generate versioned trace file, deorbit after stable/13 EOL
+ */
+#define KTRFAC_VERSIONED 0x10000000
#ifdef _KERNEL
struct ktr_io_params;
Index: sys/sys/param.h
===================================================================
--- sys/sys/param.h
+++ sys/sys/param.h
@@ -107,6 +107,7 @@
#define P_OSREL_CK_SUPERBLOCK 1300000
#define P_OSREL_CK_INODE 1300005
#define P_OSREL_POWERPC_NEW_AUX_ARGS 1300070
+#define P_OSREL_KTRACE_VERSIONED 1400064
#define P_OSREL_MAJOR(x) ((x) / 100000)
#endif
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Feb 17, 5:12 AM (5 h, 54 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28802414
Default Alt Text
D35851.diff (3 KB)
Attached To
Mode
D35851: ktrace: Teach kernel to write v0 format
Attached
Detach File
Event Timeline
Log In to Comment