[PATCH] Kprobes: Track kprobe on a per_cpu basis - sparc64 changes

Sparc64 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 <[email protected]>
Signed-off-by: Anil S Keshavamurthy <[email protected]>
Cc: "David S. Miller" <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
Ananth N Mavinakayanahalli 2005-11-07 01:00:11 -08:00 • committed by Linus Torvalds
commit f215d985e9
2 changed files with 87 additions and 64 deletions

View file

@ -3,6 +3,7 @@
#include <linux/config.h>
#include <linux/types.h>
#include <linux/percpu.h>
typedef u32 kprobe_opcode_t;
@ -18,6 +19,25 @@ struct arch_specific_insn {
kprobe_opcode_t insn[MAX_INSN_SIZE];
};
struct prev_kprobe {
struct kprobe *kp;
unsigned int status;
unsigned long orig_tnpc;
unsigned long orig_tstate_pil;
};
/* per-cpu kprobe control block */
struct kprobe_ctlblk {
unsigned long kprobe_status;
unsigned long kprobe_orig_tnpc;
unsigned long kprobe_orig_tstate_pil;
long *jprobe_saved_esp;
struct pt_regs jprobe_saved_regs;
struct pt_regs *jprobe_saved_regs_location;
struct sparc_stackf jprobe_saved_stack;
struct prev_kprobe prev_kprobe;
};
#ifdef CONFIG_KPROBES
extern int kprobe_exceptions_notify(struct notifier_block *self,
unsigned long val, void *data);