]>
git.saurik.com Git - apple/xnu.git/blob - tests/ktrace_helpers.h
1 #ifndef KTRACE_HELPERS_H
2 #define KTRACE_HELPERS_H
4 #include <darwintest.h>
6 #include <sys/sysctl.h>
7 #include <System/sys/kdebug.h>
12 (void)sysctl((int[]){ CTL_KERN
, KERN_KDEBUG
, KERN_KDREMOVE
}, 3,
18 start_controlling_ktrace(void)
23 size_t statesz
= sizeof(state
);
24 int ret
= sysctlbyname("ktrace.state", &state
, &statesz
, NULL
, 0);
25 T_QUIET
; T_ASSERT_POSIX_SUCCESS(ret
, "getting ktrace state");
29 size_t pidsz
= sizeof(ownerpid
);
30 ret
= sysctlbyname("ktrace.owning_pid", &ownerpid
, &pidsz
, NULL
, 0);
31 T_QUIET
; T_ASSERT_POSIX_SUCCESS(ret
, "getting owning pid");
34 T_LOG("ktrace is in foreground, but no owner");
39 ret
= proc_name(ownerpid
, ownername
, sizeof(ownername
));
41 T_LOG("ktrace is in foreground, but owner (%d) has no name", ownerpid
);
45 T_LOG("ktrace is in foreground, owned by %s, sending SIGKILL", ownername
);
46 kill(ownerpid
, SIGKILL
);
49 ret
= proc_name(ownerpid
, ownername
, sizeof(ownername
));
50 T_QUIET
; T_ASSERT_EQ(ret
, 0, "should have killed ktrace owner");
55 T_ATEND(reset_ktrace
);
59 #endif /* !defined(KTRACE_HELPERS_H) */