Blame view

include/linux/kprobes.h 13.3 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  #ifndef _LINUX_KPROBES_H
  #define _LINUX_KPROBES_H
  /*
   *  Kernel Probes (KProbes)
   *  include/linux/kprobes.h
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation; either version 2 of the License, or
   * (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   *
   * You should have received a copy of the GNU General Public License
   * along with this program; if not, write to the Free Software
   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
   *
   * Copyright (C) IBM Corporation, 2002, 2004
   *
   * 2002-Oct	Created by Vamsi Krishna S <vamsi_krishna@in.ibm.com> Kernel
   *		Probes initial implementation ( includes suggestions from
   *		Rusty Russell).
   * 2004-July	Suparna Bhattacharya <suparna@in.ibm.com> added jumper probes
   *		interface to access function arguments.
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
28
29
30
   * 2005-May	Hien Nguyen <hien@us.ibm.com> and Jim Keniston
   *		<jkenisto@us.ibm.com>  and Prasanna S Panchamukhi
   *		<prasanna@in.ibm.com> added function-return probes.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
31
   */
324670b62   Masami Hiramatsu   kprobes: Move __k...
32
  #include <linux/compiler.h>	/* for __kprobes */
36dcd67ae   Ingo Molnar   ftrace: ignore fu...
33
  #include <linux/linkage.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
34
35
36
  #include <linux/list.h>
  #include <linux/notifier.h>
  #include <linux/smp.h>
187f1882b   Paul Gortmaker   BUG: headers with...
37
  #include <linux/bug.h>
e65845235   Ananth N Mavinakayanahalli   [PATCH] Kprobes: ...
38
  #include <linux/percpu.h>
3516a4604   Ananth N Mavinakayanahalli   [PATCH] Kprobes: ...
39
40
  #include <linux/spinlock.h>
  #include <linux/rcupdate.h>
7a7d1cf95   Ingo Molnar   [PATCH] sem2mutex...
41
  #include <linux/mutex.h>
ae6aa16fd   Masami Hiramatsu   kprobes: introduc...
42
  #include <linux/ftrace.h>
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
43

00d7c05ab   Keshavamurthy Anil S   [PATCH] kprobes: ...
44
  #ifdef CONFIG_KPROBES
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
45
  #include <asm/kprobes.h>
ea32c65cc   Prasanna S Panchamukhi   [PATCH] kprobes: ...
46
47
48
49
50
  /* kprobe_status settings */
  #define KPROBE_HIT_ACTIVE	0x00000001
  #define KPROBE_HIT_SS		0x00000002
  #define KPROBE_REENTER		0x00000004
  #define KPROBE_HIT_SSDONE	0x00000008
dc19835df   Masami Hiramatsu   kprobes: fix modu...
51
52
53
54
55
  #else /* CONFIG_KPROBES */
  typedef int kprobe_opcode_t;
  struct arch_specific_insn {
  	int dummy;
  };
dc19835df   Masami Hiramatsu   kprobes: fix modu...
56
  #endif /* CONFIG_KPROBES */
d0aaff979   Prasanna S Panchamukhi   [PATCH] Kprobes: ...
57

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
58
59
  struct kprobe;
  struct pt_regs;
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
60
61
  struct kretprobe;
  struct kretprobe_instance;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
62
63
64
65
66
67
  typedef int (*kprobe_pre_handler_t) (struct kprobe *, struct pt_regs *);
  typedef int (*kprobe_break_handler_t) (struct kprobe *, struct pt_regs *);
  typedef void (*kprobe_post_handler_t) (struct kprobe *, struct pt_regs *,
  				       unsigned long flags);
  typedef int (*kprobe_fault_handler_t) (struct kprobe *, struct pt_regs *,
  				       int trapnr);
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
68
69
  typedef int (*kretprobe_handler_t) (struct kretprobe_instance *,
  				    struct pt_regs *);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
70
71
  struct kprobe {
  	struct hlist_node hlist;
64f562c6d   Ananth N Mavinakayanahalli   [PATCH] kprobes: ...
72
73
  	/* list of kprobes for multi-handler support */
  	struct list_head list;
ea32c65cc   Prasanna S Panchamukhi   [PATCH] kprobes: ...
74
75
  	/*count the number of times this probe was temporarily disarmed */
  	unsigned long nmissed;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
76
77
  	/* location of the probe point */
  	kprobe_opcode_t *addr;
3a872d89b   Ananth N Mavinakayanahalli   [PATCH] Kprobes: ...
78
  	/* Allow user to indicate symbol name of the probe point */
9b3af29bf   Ananth N Mavinakayanahalli   Kprobes: Make kpr...
79
  	const char *symbol_name;
3a872d89b   Ananth N Mavinakayanahalli   [PATCH] Kprobes: ...
80
81
82
  
  	/* Offset into the symbol */
  	unsigned int offset;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
83
84
85
86
87
  	/* Called before addr is executed. */
  	kprobe_pre_handler_t pre_handler;
  
  	/* Called after addr is executed, unless... */
  	kprobe_post_handler_t post_handler;
cc00e9cfe   Masami Hiramatsu   kprobes: cleanup ...
88
89
90
91
  	/*
  	 * ... called if executing addr causes a fault (eg. page fault).
  	 * Return 1 if it handled fault, otherwise kernel will see it.
  	 */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
92
  	kprobe_fault_handler_t fault_handler;
cc00e9cfe   Masami Hiramatsu   kprobes: cleanup ...
93
94
95
96
  	/*
  	 * ... called if breakpoint trap occurs in probe handler.
  	 * Return 1 if it handled break, otherwise kernel will see it.
  	 */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
97
98
99
100
101
102
103
  	kprobe_break_handler_t break_handler;
  
  	/* Saved opcode (which has been replaced with breakpoint) */
  	kprobe_opcode_t opcode;
  
  	/* copy of the original instruction */
  	struct arch_specific_insn ainsn;
e8386a0cb   Masami Hiramatsu   kprobes: support ...
104

de5bd88d5   Masami Hiramatsu   kprobes: support ...
105
106
107
108
  	/*
  	 * Indicates various status flags.
  	 * Protected by kprobe_mutex after this kprobe is registered.
  	 */
e8386a0cb   Masami Hiramatsu   kprobes: support ...
109
  	u32 flags;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
110
  };
e8386a0cb   Masami Hiramatsu   kprobes: support ...
111
112
  /* Kprobe status flags */
  #define KPROBE_FLAG_GONE	1 /* breakpoint has already gone */
de5bd88d5   Masami Hiramatsu   kprobes: support ...
113
  #define KPROBE_FLAG_DISABLED	2 /* probe is temporarily disabled */
afd66255b   Masami Hiramatsu   kprobes: Introduc...
114
115
116
117
118
  #define KPROBE_FLAG_OPTIMIZED	4 /*
  				   * probe is really optimized.
  				   * NOTE:
  				   * this flag is only for optimized_kprobe.
  				   */
ae6aa16fd   Masami Hiramatsu   kprobes: introduc...
119
  #define KPROBE_FLAG_FTRACE	8 /* probe is using ftrace */
e8386a0cb   Masami Hiramatsu   kprobes: support ...
120

de5bd88d5   Masami Hiramatsu   kprobes: support ...
121
  /* Has this kprobe gone ? */
e8386a0cb   Masami Hiramatsu   kprobes: support ...
122
123
124
125
  static inline int kprobe_gone(struct kprobe *p)
  {
  	return p->flags & KPROBE_FLAG_GONE;
  }
de5bd88d5   Masami Hiramatsu   kprobes: support ...
126
127
128
129
130
  /* Is this kprobe disabled ? */
  static inline int kprobe_disabled(struct kprobe *p)
  {
  	return p->flags & (KPROBE_FLAG_DISABLED | KPROBE_FLAG_GONE);
  }
afd66255b   Masami Hiramatsu   kprobes: Introduc...
131
132
133
134
135
136
  
  /* Is this kprobe really running optimized path ? */
  static inline int kprobe_optimized(struct kprobe *p)
  {
  	return p->flags & KPROBE_FLAG_OPTIMIZED;
  }
ae6aa16fd   Masami Hiramatsu   kprobes: introduc...
137
138
139
140
141
142
  
  /* Is this kprobe uses ftrace ? */
  static inline int kprobe_ftrace(struct kprobe *p)
  {
  	return p->flags & KPROBE_FLAG_FTRACE;
  }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
143
144
145
146
147
148
149
150
151
152
153
154
  /*
   * Special probe type that uses setjmp-longjmp type tricks to resume
   * execution at a specified entry with a matching prototype corresponding
   * to the probed function - a trick to enable arguments to become
   * accessible seamlessly by probe handling logic.
   * Note:
   * Because of the way compilers allocate stack space for local variables
   * etc upfront, regardless of sub-scopes within a function, this mirroring
   * principle currently works only for probes placed on function entry points.
   */
  struct jprobe {
  	struct kprobe kp;
81eae375e   Michael Ellerman   jprobes: make str...
155
  	void *entry;	/* probe handling code to jump to */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
156
  };
9e367d859   Michael Ellerman   jprobes: remove J...
157
158
  /* For backward compatibility with old code using JPROBE_ENTRY() */
  #define JPROBE_ENTRY(handler)	(handler)
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
159
160
161
162
163
164
165
166
167
168
169
170
171
  /*
   * Function-return probe -
   * Note:
   * User needs to provide a handler function, and initialize maxactive.
   * maxactive - The maximum number of instances of the probed function that
   * can be active concurrently.
   * nmissed - tracks the number of times the probed function's return was
   * ignored, due to maxactive being too low.
   *
   */
  struct kretprobe {
  	struct kprobe kp;
  	kretprobe_handler_t handler;
f47cd9b55   Abhishek Sagar   kprobes: kretprob...
172
  	kretprobe_handler_t entry_handler;
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
173
174
  	int maxactive;
  	int nmissed;
f47cd9b55   Abhishek Sagar   kprobes: kretprob...
175
  	size_t data_size;
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
176
  	struct hlist_head free_instances;
ec484608c   Thomas Gleixner   locking, kprobes:...
177
  	raw_spinlock_t lock;
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
178
179
180
  };
  
  struct kretprobe_instance {
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
181
182
  	struct hlist_node hlist;
  	struct kretprobe *rp;
802eae7c8   Rusty Lynch   [PATCH] Return pr...
183
184
  	kprobe_opcode_t *ret_addr;
  	struct task_struct *task;
f47cd9b55   Abhishek Sagar   kprobes: kretprob...
185
  	char data[0];
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
186
  };
f438d914b   Masami Hiramatsu   kprobes: support ...
187
188
189
190
  struct kretprobe_blackpoint {
  	const char *name;
  	void *addr;
  };
3d8d996e0   Srinivasa Ds   kprobes: prevent ...
191
192
193
194
195
196
  
  struct kprobe_blackpoint {
  	const char *name;
  	unsigned long start_addr;
  	unsigned long range;
  };
dc19835df   Masami Hiramatsu   kprobes: fix modu...
197
198
199
  #ifdef CONFIG_KPROBES
  DECLARE_PER_CPU(struct kprobe *, current_kprobe);
  DECLARE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
b18018126   Ingo Molnar   x86, mm, kprobes:...
200
201
202
203
204
205
206
  /*
   * For #ifdef avoidance:
   */
  static inline int kprobes_built_in(void)
  {
  	return 1;
  }
dc19835df   Masami Hiramatsu   kprobes: fix modu...
207
208
209
210
211
212
213
214
215
216
217
218
219
220
  #ifdef CONFIG_KRETPROBES
  extern void arch_prepare_kretprobe(struct kretprobe_instance *ri,
  				   struct pt_regs *regs);
  extern int arch_trampoline_kprobe(struct kprobe *p);
  #else /* CONFIG_KRETPROBES */
  static inline void arch_prepare_kretprobe(struct kretprobe *rp,
  					struct pt_regs *regs)
  {
  }
  static inline int arch_trampoline_kprobe(struct kprobe *p)
  {
  	return 0;
  }
  #endif /* CONFIG_KRETPROBES */
f438d914b   Masami Hiramatsu   kprobes: support ...
221
  extern struct kretprobe_blackpoint kretprobe_blacklist[];
0f95b7fc8   Ananth N Mavinakayanahalli   Kprobes: print de...
222
223
224
225
226
227
228
229
230
231
  static inline void kretprobe_assert(struct kretprobe_instance *ri,
  	unsigned long orig_ret_address, unsigned long trampoline_address)
  {
  	if (!orig_ret_address || (orig_ret_address == trampoline_address)) {
  		printk("kretprobe BUG!: Processing kretprobe %p @ %p
  ",
  				ri->rp, ri->rp->kp.addr);
  		BUG();
  	}
  }
8c1c93564   Ananth N Mavinakayanahalli   x86: kprobes: add...
232
233
234
235
236
237
238
239
  #ifdef CONFIG_KPROBES_SANITY_TEST
  extern int init_test_probes(void);
  #else
  static inline int init_test_probes(void)
  {
  	return 0;
  }
  #endif /* CONFIG_KPROBES_SANITY_TEST */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
240
  extern int arch_prepare_kprobe(struct kprobe *p);
7e1048b11   Rusty Lynch   [PATCH] Move kpro...
241
242
  extern void arch_arm_kprobe(struct kprobe *p);
  extern void arch_disarm_kprobe(struct kprobe *p);
6772926be   Rusty Lynch   [PATCH] kprobes: ...
243
  extern int arch_init_kprobes(void);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
244
  extern void show_registers(struct pt_regs *regs);
bf8d5c52c   Keshavamurthy Anil S   [PATCH] kprobes: ...
245
  extern void kprobes_inc_nmissed_count(struct kprobe *p);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
246

c802d64a3   Heiko Carstens   kprobes: unify in...
247
248
  struct kprobe_insn_cache {
  	struct mutex mutex;
af96397de   Heiko Carstens   kprobes: allow to...
249
250
  	void *(*alloc)(void);	/* allocate insn page */
  	void (*free)(void *);	/* free insn page */
c802d64a3   Heiko Carstens   kprobes: unify in...
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
  	struct list_head pages; /* list of kprobe_insn_page */
  	size_t insn_size;	/* size of instruction slot */
  	int nr_garbage;
  };
  
  extern kprobe_opcode_t *__get_insn_slot(struct kprobe_insn_cache *c);
  extern void __free_insn_slot(struct kprobe_insn_cache *c,
  			     kprobe_opcode_t *slot, int dirty);
  
  #define DEFINE_INSN_CACHE_OPS(__name)					\
  extern struct kprobe_insn_cache kprobe_##__name##_slots;		\
  									\
  static inline kprobe_opcode_t *get_##__name##_slot(void)		\
  {									\
  	return __get_insn_slot(&kprobe_##__name##_slots);		\
  }									\
  									\
  static inline void free_##__name##_slot(kprobe_opcode_t *slot, int dirty)\
  {									\
  	__free_insn_slot(&kprobe_##__name##_slots, slot, dirty);	\
  }									\
  
  DEFINE_INSN_CACHE_OPS(insn);
afd66255b   Masami Hiramatsu   kprobes: Introduc...
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
  #ifdef CONFIG_OPTPROBES
  /*
   * Internal structure for direct jump optimized probe
   */
  struct optimized_kprobe {
  	struct kprobe kp;
  	struct list_head list;	/* list for optimizing queue */
  	struct arch_optimized_insn optinsn;
  };
  
  /* Architecture dependent functions for direct jump optimization */
  extern int arch_prepared_optinsn(struct arch_optimized_insn *optinsn);
  extern int arch_check_optimized_kprobe(struct optimized_kprobe *op);
  extern int arch_prepare_optimized_kprobe(struct optimized_kprobe *op);
  extern void arch_remove_optimized_kprobe(struct optimized_kprobe *op);
cd7ebe229   Masami Hiramatsu   kprobes: Use text...
289
  extern void arch_optimize_kprobes(struct list_head *oplist);
f984ba4eb   Masami Hiramatsu   kprobes: Use text...
290
291
  extern void arch_unoptimize_kprobes(struct list_head *oplist,
  				    struct list_head *done_list);
afd66255b   Masami Hiramatsu   kprobes: Introduc...
292
  extern void arch_unoptimize_kprobe(struct optimized_kprobe *op);
afd66255b   Masami Hiramatsu   kprobes: Introduc...
293
294
295
296
  extern int arch_within_optimized_kprobe(struct optimized_kprobe *op,
  					unsigned long addr);
  
  extern void opt_pre_handler(struct kprobe *p, struct pt_regs *regs);
b2be84df9   Masami Hiramatsu   kprobes: Jump opt...
297

c802d64a3   Heiko Carstens   kprobes: unify in...
298
  DEFINE_INSN_CACHE_OPS(optinsn);
b2be84df9   Masami Hiramatsu   kprobes: Jump opt...
299
300
301
302
303
304
  #ifdef CONFIG_SYSCTL
  extern int sysctl_kprobes_optimization;
  extern int proc_kprobes_optimization_handler(struct ctl_table *table,
  					     int write, void __user *buffer,
  					     size_t *length, loff_t *ppos);
  #endif
afd66255b   Masami Hiramatsu   kprobes: Introduc...
305
  #endif /* CONFIG_OPTPROBES */
e7dbfe349   Masami Hiramatsu   kprobes/x86: Move...
306
  #ifdef CONFIG_KPROBES_ON_FTRACE
ae6aa16fd   Masami Hiramatsu   kprobes: introduc...
307
  extern void kprobe_ftrace_handler(unsigned long ip, unsigned long parent_ip,
e52538965   Masami Hiramatsu   kprobes/x86: ftra...
308
  				  struct ftrace_ops *ops, struct pt_regs *regs);
ae6aa16fd   Masami Hiramatsu   kprobes: introduc...
309
310
  extern int arch_prepare_kprobe_ftrace(struct kprobe *p);
  #endif
afd66255b   Masami Hiramatsu   kprobes: Introduc...
311

d217d5450   Ananth N Mavinakayanahalli   [PATCH] Kprobes: ...
312
  /* Get the kprobe at this addr (if any) - called with preemption disabled */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
313
  struct kprobe *get_kprobe(void *addr);
ef53d9c5e   Srinivasa D S   kprobes: improve ...
314
315
316
  void kretprobe_hash_lock(struct task_struct *tsk,
  			 struct hlist_head **head, unsigned long *flags);
  void kretprobe_hash_unlock(struct task_struct *tsk, unsigned long *flags);
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
317
  struct hlist_head * kretprobe_inst_table_head(struct task_struct *tsk);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
318

e65845235   Ananth N Mavinakayanahalli   [PATCH] Kprobes: ...
319
320
321
  /* kprobe_running() will just return the current_kprobe on this CPU */
  static inline struct kprobe *kprobe_running(void)
  {
b76834bc1   Christoph Lameter   kprobes: Use this...
322
  	return (__this_cpu_read(current_kprobe));
e65845235   Ananth N Mavinakayanahalli   [PATCH] Kprobes: ...
323
324
325
326
  }
  
  static inline void reset_current_kprobe(void)
  {
b76834bc1   Christoph Lameter   kprobes: Use this...
327
  	__this_cpu_write(current_kprobe, NULL);
e65845235   Ananth N Mavinakayanahalli   [PATCH] Kprobes: ...
328
329
330
331
332
333
  }
  
  static inline struct kprobe_ctlblk *get_kprobe_ctlblk(void)
  {
  	return (&__get_cpu_var(kprobe_ctlblk));
  }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
334
335
  int register_kprobe(struct kprobe *p);
  void unregister_kprobe(struct kprobe *p);
9861668f7   Masami Hiramatsu   kprobes: add (un)...
336
337
  int register_kprobes(struct kprobe **kps, int num);
  void unregister_kprobes(struct kprobe **kps, int num);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
338
339
340
341
  int setjmp_pre_handler(struct kprobe *, struct pt_regs *);
  int longjmp_break_handler(struct kprobe *, struct pt_regs *);
  int register_jprobe(struct jprobe *p);
  void unregister_jprobe(struct jprobe *p);
26b31c190   Masami Hiramatsu   kprobes: add (un)...
342
343
  int register_jprobes(struct jprobe **jps, int num);
  void unregister_jprobes(struct jprobe **jps, int num);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
344
  void jprobe_return(void);
3d7e33825   Michael Ellerman   jprobes: make jpr...
345
  unsigned long arch_deref_entry_point(void *);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
346

b94cce926   Hien Nguyen   [PATCH] kprobes: ...
347
348
  int register_kretprobe(struct kretprobe *rp);
  void unregister_kretprobe(struct kretprobe *rp);
4a296e07c   Masami Hiramatsu   kprobes: add (un)...
349
350
  int register_kretprobes(struct kretprobe **rps, int num);
  void unregister_kretprobes(struct kretprobe **rps, int num);
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
351

b94cce926   Hien Nguyen   [PATCH] kprobes: ...
352
  void kprobe_flush_task(struct task_struct *tk);
99219a3fb   bibo,mao   [PATCH] kretprobe...
353
  void recycle_rp_inst(struct kretprobe_instance *ri, struct hlist_head *head);
8c1c93564   Ananth N Mavinakayanahalli   x86: kprobes: add...
354

de5bd88d5   Masami Hiramatsu   kprobes: support ...
355
356
  int disable_kprobe(struct kprobe *kp);
  int enable_kprobe(struct kprobe *kp);
24851d244   Frederic Weisbecker   tracing/kprobes: ...
357
  void dump_kprobe(struct kprobe *kp);
b18018126   Ingo Molnar   x86, mm, kprobes:...
358
  #else /* !CONFIG_KPROBES: */
00d7c05ab   Keshavamurthy Anil S   [PATCH] kprobes: ...
359

b18018126   Ingo Molnar   x86, mm, kprobes:...
360
361
362
363
364
365
366
367
  static inline int kprobes_built_in(void)
  {
  	return 0;
  }
  static inline int kprobe_fault_handler(struct pt_regs *regs, int trapnr)
  {
  	return 0;
  }
785656a41   Abhishek Sagar   kprobes: enable c...
368
369
370
371
  static inline struct kprobe *get_kprobe(void *addr)
  {
  	return NULL;
  }
e65845235   Ananth N Mavinakayanahalli   [PATCH] Kprobes: ...
372
  static inline struct kprobe *kprobe_running(void)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
373
  {
e65845235   Ananth N Mavinakayanahalli   [PATCH] Kprobes: ...
374
  	return NULL;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
375
376
377
378
379
  }
  static inline int register_kprobe(struct kprobe *p)
  {
  	return -ENOSYS;
  }
9861668f7   Masami Hiramatsu   kprobes: add (un)...
380
381
382
383
  static inline int register_kprobes(struct kprobe **kps, int num)
  {
  	return -ENOSYS;
  }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
384
385
386
  static inline void unregister_kprobe(struct kprobe *p)
  {
  }
9861668f7   Masami Hiramatsu   kprobes: add (un)...
387
388
389
  static inline void unregister_kprobes(struct kprobe **kps, int num)
  {
  }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
390
391
392
393
  static inline int register_jprobe(struct jprobe *p)
  {
  	return -ENOSYS;
  }
26b31c190   Masami Hiramatsu   kprobes: add (un)...
394
395
396
397
  static inline int register_jprobes(struct jprobe **jps, int num)
  {
  	return -ENOSYS;
  }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
398
399
400
  static inline void unregister_jprobe(struct jprobe *p)
  {
  }
26b31c190   Masami Hiramatsu   kprobes: add (un)...
401
402
403
  static inline void unregister_jprobes(struct jprobe **jps, int num)
  {
  }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
404
405
406
  static inline void jprobe_return(void)
  {
  }
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
407
408
409
410
  static inline int register_kretprobe(struct kretprobe *rp)
  {
  	return -ENOSYS;
  }
4a296e07c   Masami Hiramatsu   kprobes: add (un)...
411
412
413
414
  static inline int register_kretprobes(struct kretprobe **rps, int num)
  {
  	return -ENOSYS;
  }
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
415
416
417
  static inline void unregister_kretprobe(struct kretprobe *rp)
  {
  }
4a296e07c   Masami Hiramatsu   kprobes: add (un)...
418
419
420
  static inline void unregister_kretprobes(struct kretprobe **rps, int num)
  {
  }
b94cce926   Hien Nguyen   [PATCH] kprobes: ...
421
422
423
  static inline void kprobe_flush_task(struct task_struct *tk)
  {
  }
de5bd88d5   Masami Hiramatsu   kprobes: support ...
424
425
426
427
428
429
430
431
  static inline int disable_kprobe(struct kprobe *kp)
  {
  	return -ENOSYS;
  }
  static inline int enable_kprobe(struct kprobe *kp)
  {
  	return -ENOSYS;
  }
b18018126   Ingo Molnar   x86, mm, kprobes:...
432
  #endif /* CONFIG_KPROBES */
8f9b15286   Masami Hiramatsu   kprobes: support ...
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
  static inline int disable_kretprobe(struct kretprobe *rp)
  {
  	return disable_kprobe(&rp->kp);
  }
  static inline int enable_kretprobe(struct kretprobe *rp)
  {
  	return enable_kprobe(&rp->kp);
  }
  static inline int disable_jprobe(struct jprobe *jp)
  {
  	return disable_kprobe(&jp->kp);
  }
  static inline int enable_jprobe(struct jprobe *jp)
  {
  	return enable_kprobe(&jp->kp);
  }
b18018126   Ingo Molnar   x86, mm, kprobes:...
449
  #endif /* _LINUX_KPROBES_H */