d06fc4d5 |
1 | /* marker-example.c |
2 | * |
3 | * Executes a marker when /proc/marker-example is opened. |
4 | * |
5 | * (C) Copyright 2007 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> |
6 | * |
7 | * This file is released under the GPLv2. |
8 | * See the file COPYING for more details. |
9 | */ |
10 | |
11 | #include <linux/module.h> |
12 | #include <linux/marker.h> |
13 | #include <linux/sched.h> |
14 | #include <linux/proc_fs.h> |
15 | |
16 | struct proc_dir_entry *pentry_example = NULL; |
17 | |
18 | static int my_open(struct inode *inode, struct file *file) |
19 | { |
20 | int i; |
21 | |
421991b0 |
22 | trace_mark(subsystem_event, "%d %s", 123, "example string"); |
d06fc4d5 |
23 | for (i=0; i<10; i++) { |
421991b0 |
24 | trace_mark(subsystem_eventb, MARK_NOARGS); |
d06fc4d5 |
25 | } |
26 | return -EPERM; |
27 | } |
28 | |
29 | static struct file_operations mark_ops = { |
30 | .open = my_open, |
31 | }; |
32 | |
33 | static int example_init(void) |
34 | { |
35 | printk(KERN_ALERT "example init\n"); |
36 | pentry_example = create_proc_entry("marker-example", 0444, NULL); |
37 | if (pentry_example) |
38 | pentry_example->proc_fops = &mark_ops; |
39 | else |
40 | return -EPERM; |
41 | return 0; |
42 | } |
43 | |
44 | static void example_exit(void) |
45 | { |
46 | printk(KERN_ALERT "example exit\n"); |
47 | remove_proc_entry("marker-example", NULL); |
48 | } |
49 | |
50 | module_init(example_init) |
51 | module_exit(example_exit) |
52 | |
53 | MODULE_LICENSE("GPL"); |
54 | MODULE_AUTHOR("Mathieu Desnoyers"); |
55 | MODULE_DESCRIPTION("Linux Trace Toolkit example"); |