diff options
author | jhb <jhb@FreeBSD.org> | 2012-04-05 17:13:14 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2012-04-05 17:13:14 +0000 |
commit | 5829de48d948e74cb77c117659140afff0ee33b3 (patch) | |
tree | c9ac7a271fa3242d8c2cd110bfe596a577e6f5f0 /usr.bin/kdump/kdump.c | |
parent | 1bdacb70cf554a29338ec17d997277abfc6f57e1 (diff) | |
download | FreeBSD-src-5829de48d948e74cb77c117659140afff0ee33b3.zip FreeBSD-src-5829de48d948e74cb77c117659140afff0ee33b3.tar.gz |
Add new ktrace records for the start and end of VM faults. This gives
a pair of records similar to syscall entry and return that a user can
use to determine how long page faults take. The new ktrace records are
enabled via the 'p' trace type, and are enabled in the default set of
trace points.
Reviewed by: kib
MFC after: 2 weeks
Diffstat (limited to 'usr.bin/kdump/kdump.c')
-rw-r--r-- | usr.bin/kdump/kdump.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c index 2756778..4d8e109 100644 --- a/usr.bin/kdump/kdump.c +++ b/usr.bin/kdump/kdump.c @@ -102,6 +102,8 @@ void ktrsockaddr(struct sockaddr *); void ktrstat(struct stat *); void ktrstruct(char *, size_t); void ktrcapfail(struct ktr_cap_fail *); +void ktrfault(struct ktr_fault *); +void ktrfaultend(struct ktr_faultend *); void usage(void); void ioctlname(unsigned long, int); @@ -306,6 +308,13 @@ main(int argc, char *argv[]) break; case KTR_CAPFAIL: ktrcapfail((struct ktr_cap_fail *)m); + break; + case KTR_FAULT: + ktrfault((struct ktr_fault *)m); + break; + case KTR_FAULTEND: + ktrfaultend((struct ktr_faultend *)m); + break; default: printf("\n"); break; @@ -448,6 +457,12 @@ dumpheader(struct ktr_header *kth) case KTR_CAPFAIL: type = "CAP "; break; + case KTR_FAULT: + type = "PFLT"; + break; + case KTR_FAULTEND: + type = "PRET"; + break; default: sprintf(unknown, "UNKNOWN(%d)", kth->ktr_type); type = unknown; @@ -1631,6 +1646,24 @@ ktrcapfail(struct ktr_cap_fail *ktr) capname((intmax_t)ktr->cap_held); break; } + printf("\n"); +} + +void +ktrfault(struct ktr_fault *ktr) +{ + + printf("0x%jx ", ktr->vaddr); + vmprotname(ktr->type); + printf("\n"); +} + +void +ktrfaultend(struct ktr_faultend *ktr) +{ + + vmresultname(ktr->result); + printf("\n"); } #if defined(__amd64__) || defined(__i386__) |