• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/samples/tracepoints/
1/*
2 * tracepoint-probe-sample.c
3 *
4 * sample tracepoint probes.
5 */
6
7#include <linux/module.h>
8#include <linux/file.h>
9#include <linux/dcache.h>
10#include "tp-samples-trace.h"
11
12/*
13 * Here the caller only guarantees locking for struct file and struct inode.
14 * Locking must therefore be done in the probe to use the dentry.
15 */
16static void probe_subsys_event(void *ignore,
17			       struct inode *inode, struct file *file)
18{
19	path_get(&file->f_path);
20	dget(file->f_path.dentry);
21	printk(KERN_INFO "Event is encountered with filename %s\n",
22		file->f_path.dentry->d_name.name);
23	dput(file->f_path.dentry);
24	path_put(&file->f_path);
25}
26
27static void probe_subsys_eventb(void *ignore)
28{
29	printk(KERN_INFO "Event B is encountered\n");
30}
31
32static int __init tp_sample_trace_init(void)
33{
34	int ret;
35
36	ret = register_trace_subsys_event(probe_subsys_event, NULL);
37	WARN_ON(ret);
38	ret = register_trace_subsys_eventb(probe_subsys_eventb, NULL);
39	WARN_ON(ret);
40
41	return 0;
42}
43
44module_init(tp_sample_trace_init);
45
46static void __exit tp_sample_trace_exit(void)
47{
48	unregister_trace_subsys_eventb(probe_subsys_eventb, NULL);
49	unregister_trace_subsys_event(probe_subsys_event, NULL);
50	tracepoint_synchronize_unregister();
51}
52
53module_exit(tp_sample_trace_exit);
54
55MODULE_LICENSE("GPL");
56MODULE_AUTHOR("Mathieu Desnoyers");
57MODULE_DESCRIPTION("Tracepoint Probes Samples");
58