Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_ktrace.c
Show First 20 Lines • Show All 316 Lines • ▼ Show 20 Lines | ktr_getrequest_entered(struct thread *td, int type) | ||||
if (req != NULL) { | if (req != NULL) { | ||||
STAILQ_REMOVE_HEAD(&ktr_free, ktr_list); | STAILQ_REMOVE_HEAD(&ktr_free, ktr_list); | ||||
req->ktr_header.ktr_type = type; | req->ktr_header.ktr_type = type; | ||||
if (p->p_traceflag & KTRFAC_DROP) { | if (p->p_traceflag & KTRFAC_DROP) { | ||||
req->ktr_header.ktr_type |= KTR_DROP; | req->ktr_header.ktr_type |= KTR_DROP; | ||||
p->p_traceflag &= ~KTRFAC_DROP; | p->p_traceflag &= ~KTRFAC_DROP; | ||||
} | } | ||||
mtx_unlock(&ktrace_mtx); | mtx_unlock(&ktrace_mtx); | ||||
microtime(&req->ktr_header.ktr_time); | nanotime(&req->ktr_header.ktr_time); | ||||
req->ktr_header.ktr_type |= KTR_NEW; | |||||
req->ktr_header.ktr_pid = p->p_pid; | req->ktr_header.ktr_pid = p->p_pid; | ||||
req->ktr_header.ktr_tid = td->td_tid; | 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, | bcopy(td->td_name, req->ktr_header.ktr_comm, | ||||
sizeof(req->ktr_header.ktr_comm)); | sizeof(req->ktr_header.ktr_comm)); | ||||
req->ktr_buffer = NULL; | req->ktr_buffer = NULL; | ||||
req->ktr_header.ktr_len = 0; | req->ktr_header.ktr_len = 0; | ||||
} else { | } else { | ||||
p->p_traceflag |= KTRFAC_DROP; | p->p_traceflag |= KTRFAC_DROP; | ||||
pm = print_message; | pm = print_message; | ||||
print_message = 0; | print_message = 0; | ||||
▲ Show 20 Lines • Show All 960 Lines • ▼ Show 20 Lines | ktr_writerequest(struct thread *td, struct ktr_request *req) | ||||
vp = kiop->vp; | vp = kiop->vp; | ||||
cred = kiop->cr; | cred = kiop->cr; | ||||
lim = kiop->lim; | lim = kiop->lim; | ||||
KASSERT(cred != NULL, ("ktr_writerequest: cred == NULL")); | KASSERT(cred != NULL, ("ktr_writerequest: cred == NULL")); | ||||
mtx_unlock(&ktrace_mtx); | mtx_unlock(&ktrace_mtx); | ||||
kth = &req->ktr_header; | kth = &req->ktr_header; | ||||
KASSERT(((u_short)kth->ktr_type & ~KTR_DROP) < nitems(data_lengths), | KASSERT(((u_short)kth->ktr_type & ~KTR_TYPE) < nitems(data_lengths), | ||||
("data_lengths array overflow")); | ("data_lengths array overflow")); | ||||
datalen = data_lengths[(u_short)kth->ktr_type & ~KTR_DROP]; | datalen = data_lengths[(u_short)kth->ktr_type & ~KTR_TYPE]; | ||||
buflen = kth->ktr_len; | buflen = kth->ktr_len; | ||||
auio.uio_iov = &aiov[0]; | auio.uio_iov = &aiov[0]; | ||||
auio.uio_offset = 0; | auio.uio_offset = 0; | ||||
auio.uio_segflg = UIO_SYSSPACE; | auio.uio_segflg = UIO_SYSSPACE; | ||||
auio.uio_rw = UIO_WRITE; | auio.uio_rw = UIO_WRITE; | ||||
aiov[0].iov_base = (caddr_t)kth; | aiov[0].iov_base = (caddr_t)kth; | ||||
aiov[0].iov_len = sizeof(struct ktr_header); | aiov[0].iov_len = sizeof(struct ktr_header); | ||||
auio.uio_resid = sizeof(struct ktr_header); | auio.uio_resid = sizeof(struct ktr_header); | ||||
▲ Show 20 Lines • Show All 79 Lines • Show Last 20 Lines |