X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;ds=sidebyside;f=tests%2Fkernel%2Fprobe.c;h=5f2c484b0a0b40802a63d7525c254357a15f7c8e;hb=d11576c9325f522c6763201bcf68ad9f57ebafed;hp=96d9ff4d0bc13ac26fcb07c4f335eda9c5b41360;hpb=3bb4bef88faa8857b10f687047932e0548f2d310;p=lttv.git diff --git a/tests/kernel/probe.c b/tests/kernel/probe.c index 96d9ff4d..5f2c484b 100644 --- a/tests/kernel/probe.c +++ b/tests/kernel/probe.c @@ -13,24 +13,76 @@ #include /* function to install */ -void do_mark1(const char *format, int value) +#define DO_MARK1_FORMAT "%d" +void do_mark1(const char *format, ...) { + va_list ap; + int value; + + va_start(ap, format); + value = va_arg(ap, int); printk("value is %d\n", value); + + va_end(ap); +} + +void do_mark2(const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + vprintk(format, ap); + va_end(ap); + printk("\n"); +} + +#define DO_MARK3_FORMAT "%d %s %s" +void do_mark3(const char *format, ...) +{ + va_list ap; + int value; + const char *s1, *s2; + + va_start(ap, format); + value = va_arg(ap, int); + s1 = va_arg(ap, const char*); + s2 = va_arg(ap, const char *); + + printk("value is %d %s %s\n", + value, s1, s2); + va_end(ap); } int init_module(void) { - return marker_set_probe("subsys_mark1", (marker_probe)do_mark1, - MARKER_CALL); + int result; + result = marker_set_probe("subsys_mark1", DO_MARK1_FORMAT, + (marker_probe_func*)do_mark1); + if(!result) goto end; + result = marker_set_probe("subsys_mark2", NULL, + (marker_probe_func*)do_mark2); + if(!result) goto cleanup1; + result = marker_set_probe("subsys_mark3", DO_MARK3_FORMAT, + (marker_probe_func*)do_mark3); + if(!result) goto cleanup2; + + return 0; + +cleanup2: + marker_remove_probe((marker_probe_func*)do_mark2); +cleanup1: + marker_remove_probe((marker_probe_func*)do_mark1); +end: + return -EPERM; } void cleanup_module(void) { - marker_disable_probe("subsys_mark1", (marker_probe)do_mark1, - MARKER_CALL); + marker_remove_probe((marker_probe_func*)do_mark1); + marker_remove_probe((marker_probe_func*)do_mark2); + marker_remove_probe((marker_probe_func*)do_mark3); } MODULE_LICENSE("GPL"); MODULE_AUTHOR("Mathieu Desnoyers"); MODULE_DESCRIPTION("Probe"); -