From: Stéphane Graber Date: Tue, 19 Dec 2017 20:55:07 +0000 (-0500) Subject: Add a new /dev/lttng-logger interface X-Git-Tag: v2.11.0-rc1~71 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=4d328377868e2f8fc2027c2492c3cd53615dffdc;p=lttng-modules.git Add a new /dev/lttng-logger interface This is identical to /proc/lttng-logger but has the advantage of working from within containers when the path is made accessible to them. Fixes: #1145 Signed-off-by: Stéphane Graber Signed-off-by: Mathieu Desnoyers --- diff --git a/probes/lttng.c b/probes/lttng.c index 09045fac..449d8a5c 100644 --- a/probes/lttng.c +++ b/probes/lttng.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -105,19 +106,37 @@ static const struct file_operations lttng_logger_operations = { .write = lttng_logger_write, }; +static struct miscdevice logger_dev = { + .minor = MISC_DYNAMIC_MINOR, + .name = "lttng-logger", + .mode = 0666, + .fops = <tng_logger_operations +}; + int __init lttng_logger_init(void) { int ret = 0; wrapper_vmalloc_sync_all(); + + /* /dev/lttng-logger */ + ret = misc_register(&logger_dev); + if (ret) { + printk(KERN_ERR "Error creating LTTng logger device\n"); + goto error; + } + + /* /proc/lttng-logger */ lttng_logger_dentry = proc_create_data(LTTNG_LOGGER_FILE, S_IRUGO | S_IWUGO, NULL, <tng_logger_operations, NULL); if (!lttng_logger_dentry) { - printk(KERN_ERR "Error creating LTTng logger file\n"); + printk(KERN_ERR "Error creating LTTng logger proc file\n"); ret = -ENOMEM; - goto error; + goto error_proc; } + + /* Init */ ret = __lttng_events_init__lttng(); if (ret) goto error_events; @@ -125,6 +144,8 @@ int __init lttng_logger_init(void) error_events: remove_proc_entry("lttng-logger", NULL); +error_proc: + misc_deregister(&logger_dev); error: return ret; } @@ -134,4 +155,5 @@ void lttng_logger_exit(void) __lttng_events_exit__lttng(); if (lttng_logger_dentry) remove_proc_entry("lttng-logger", NULL); + misc_deregister(&logger_dev); }