Fix: add "flush empty" ioctl for stream intersection
[lttng-modules.git] / lib / ringbuffer / ring_buffer_vfs.c
index f15b974be0e48c2a95fd77ddfe39647e93382b0b..4b1aa38ea674f18184aa4a684a0a6c9bc4051fed 100644 (file)
 #include <linux/fs.h>
 #include <linux/compat.h>
 
-#include "../../wrapper/ringbuffer/backend.h"
-#include "../../wrapper/ringbuffer/frontend.h"
-#include "../../wrapper/ringbuffer/vfs.h"
-#include "../../wrapper/poll.h"
+#include <wrapper/ringbuffer/backend.h>
+#include <wrapper/ringbuffer/frontend.h>
+#include <wrapper/ringbuffer/vfs.h>
+#include <wrapper/poll.h>
+#include <lttng-tracer.h>
 
 static int put_ulong(unsigned long val, unsigned long arg)
 {
@@ -41,6 +42,10 @@ static int compat_put_ulong(compat_ulong_t val, unsigned long arg)
 }
 #endif
 
+/*
+ * This is not used by anonymous file descriptors. This code is left
+ * there if we ever want to implement an inode with open() operation.
+ */
 int lib_ring_buffer_open(struct inode *inode, struct file *file,
                struct lib_ring_buffer *buf)
 {
@@ -265,6 +270,9 @@ long lib_ring_buffer_ioctl(struct file *filp, unsigned int cmd,
        case RING_BUFFER_FLUSH:
                lib_ring_buffer_switch_remote(buf);
                return 0;
+       case RING_BUFFER_FLUSH_EMPTY:
+               lib_ring_buffer_switch_remote_empty(buf);
+               return 0;
        default:
                return -ENOIOCTLCMD;
        }
@@ -410,6 +418,9 @@ long lib_ring_buffer_compat_ioctl(struct file *filp, unsigned int cmd,
        case RING_BUFFER_COMPAT_FLUSH:
                lib_ring_buffer_switch_remote(buf);
                return 0;
+       case RING_BUFFER_COMPAT_FLUSH_EMPTY:
+               lib_ring_buffer_switch_remote_empty(buf);
+               return 0;
        default:
                return -ENOIOCTLCMD;
        }
@@ -444,3 +455,7 @@ EXPORT_SYMBOL_GPL(lib_ring_buffer_file_operations);
 MODULE_LICENSE("GPL and additional rights");
 MODULE_AUTHOR("Mathieu Desnoyers");
 MODULE_DESCRIPTION("Ring Buffer Library VFS");
+MODULE_VERSION(__stringify(LTTNG_MODULES_MAJOR_VERSION) "."
+       __stringify(LTTNG_MODULES_MINOR_VERSION) "."
+       __stringify(LTTNG_MODULES_PATCHLEVEL_VERSION)
+       LTTNG_MODULES_EXTRAVERSION);
This page took 0.024473 seconds and 4 git commands to generate.