summaryrefslogtreecommitdiff
path: root/kern/pc_sample.c
diff options
context:
space:
mode:
Diffstat (limited to 'kern/pc_sample.c')
-rw-r--r--kern/pc_sample.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/kern/pc_sample.c b/kern/pc_sample.c
index fcb9d71b..e9f0b16a 100644
--- a/kern/pc_sample.c
+++ b/kern/pc_sample.c
@@ -46,12 +46,18 @@ typedef sampled_pc_t sampled_pcs[MAX_PC_SAMPLES];
void take_pc_sample(
const thread_t t,
sample_control_t *cp,
- sampled_pc_flavor_t flavor)
+ sampled_pc_flavor_t flavor,
+ boolean_t usermode,
+ vm_offset_t kern_pc)
{
vm_offset_t pc;
struct sampled_pc *sample;
- pc = interrupted_pc(t);
+ if (usermode)
+ pc = interrupted_pc(t);
+ else
+ pc = kern_pc;
+
cp->seqno++;
sample = &((sampled_pc_t *)cp->buffer)[cp->seqno % MAX_PC_SAMPLES];
sample->id = (vm_offset_t)t;