move all projects into the trunk directory
[lttv.git] / trunk / tests / markers / probe-string.c
diff --git a/trunk/tests/markers/probe-string.c b/trunk/tests/markers/probe-string.c
new file mode 100644 (file)
index 0000000..e904607
--- /dev/null
@@ -0,0 +1,75 @@
+/* probe.c
+ *
+ * Loads a function at a marker call site.
+ *
+ * (C) Copyright 2006 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
+ *
+ * This file is released under the GPLv2.
+ * See the file COPYING for more details.
+ */
+
+#include <linux/marker.h>
+#include <linux/module.h>
+#include <linux/kallsyms.h>
+
+
+int value;
+void *ptr;
+
+/* function to install */
+void do_mark1(const char *format, ...)
+{
+       unsigned int i = 0;
+       va_list ap;
+       int control = 0;
+
+       va_start(ap, format);
+       while(1) {
+               if(control) {
+                       switch(format[i]) {
+                               case '\0' :
+                                       return;
+                               case 'd' :
+                                       value = va_arg(ap, int);
+                               case 'p' :
+                                       ptr = va_arg(ap, void*);
+                       }
+                       control = 0;
+               } else {
+                       switch(format[i]) {
+                               case '%' :
+                                       control = 1;
+                                       break;
+                               case '\0' :
+                                       return;
+                               default:
+                                       control = 0;
+                       }
+               }
+               i++;
+       }
+       va_end(ap);
+}
+
+int init_module(void)
+{
+       int result;
+       result = marker_set_probe("subsys_mark1", NULL,
+                       do_mark1);
+       if(!result) goto end;
+
+       return 0;
+
+end:
+       marker_remove_probe(do_mark1);
+       return -EPERM;
+}
+
+void cleanup_module(void)
+{
+       marker_remove_probe(do_mark1);
+}
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Mathieu Desnoyers");
+MODULE_DESCRIPTION("Probe");
This page took 0.024846 seconds and 4 git commands to generate.