diff options
author | Ananth N Mavinakayanahalli <ananth@in.ibm.com> | 2005-11-07 04:00:08 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-07 10:53:45 -0500 |
commit | 9a0e3a86837ac7542e601c18346102c9d9e65fa5 (patch) | |
tree | 0e58782bfe2be7c1dd82e254df9d4d0fea6781bd /include | |
parent | e65845235c8120be63001fc1a4ac00c819194bbe (diff) |
[PATCH] Kprobes: Track kprobe on a per_cpu basis - i386 changes
I386 changes to track kprobe execution on a per-cpu basis. We now track the
kprobe state machine independently on each cpu, using an arch specific kprobe
control block.
Signed-off-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Signed-off-by: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-i386/kprobes.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/asm-i386/kprobes.h b/include/asm-i386/kprobes.h index 8b6d3a90cd78..ca916a892877 100644 --- a/include/asm-i386/kprobes.h +++ b/include/asm-i386/kprobes.h | |||
@@ -49,6 +49,23 @@ struct arch_specific_insn { | |||
49 | kprobe_opcode_t insn[MAX_INSN_SIZE]; | 49 | kprobe_opcode_t insn[MAX_INSN_SIZE]; |
50 | }; | 50 | }; |
51 | 51 | ||
52 | struct prev_kprobe { | ||
53 | struct kprobe *kp; | ||
54 | unsigned long status; | ||
55 | unsigned long old_eflags; | ||
56 | unsigned long saved_eflags; | ||
57 | }; | ||
58 | |||
59 | /* per-cpu kprobe control block */ | ||
60 | struct kprobe_ctlblk { | ||
61 | unsigned long kprobe_status; | ||
62 | unsigned long kprobe_old_eflags; | ||
63 | unsigned long kprobe_saved_eflags; | ||
64 | long *jprobe_saved_esp; | ||
65 | struct pt_regs jprobe_saved_regs; | ||
66 | kprobe_opcode_t jprobes_stack[MAX_STACK_SIZE]; | ||
67 | struct prev_kprobe prev_kprobe; | ||
68 | }; | ||
52 | 69 | ||
53 | /* trap3/1 are intr gates for kprobes. So, restore the status of IF, | 70 | /* trap3/1 are intr gates for kprobes. So, restore the status of IF, |
54 | * if necessary, before executing the original int3/1 (trap) handler. | 71 | * if necessary, before executing the original int3/1 (trap) handler. |