X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=lib%2Fringbuffer%2Fring_buffer_vfs.c;h=97be835655a8c0f665526f8471aa1030e140b561;hb=a2b0231a9ae996cc69e48d75c338ad7d081a0f85;hp=f15b974be0e48c2a95fd77ddfe39647e93382b0b;hpb=5e3912524c2841304e38f962dd8d4cfc6150909e;p=lttng-modules.git diff --git a/lib/ringbuffer/ring_buffer_vfs.c b/lib/ringbuffer/ring_buffer_vfs.c index f15b974b..97be8356 100644 --- a/lib/ringbuffer/ring_buffer_vfs.c +++ b/lib/ringbuffer/ring_buffer_vfs.c @@ -24,10 +24,11 @@ #include #include -#include "../../wrapper/ringbuffer/backend.h" -#include "../../wrapper/ringbuffer/frontend.h" -#include "../../wrapper/ringbuffer/vfs.h" -#include "../../wrapper/poll.h" +#include +#include +#include +#include +#include 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) { @@ -188,6 +193,9 @@ long lib_ring_buffer_ioctl(struct file *filp, unsigned int cmd, case RING_BUFFER_SNAPSHOT: return lib_ring_buffer_snapshot(buf, &buf->cons_snapshot, &buf->prod_snapshot); + case RING_BUFFER_SNAPSHOT_SAMPLE_POSITIONS: + return lib_ring_buffer_snapshot_sample_positions(buf, + &buf->cons_snapshot, &buf->prod_snapshot); case RING_BUFFER_SNAPSHOT_GET_CONSUMED: return put_ulong(buf->cons_snapshot, arg); case RING_BUFFER_SNAPSHOT_GET_PRODUCED: @@ -265,6 +273,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; } @@ -317,6 +328,9 @@ long lib_ring_buffer_compat_ioctl(struct file *filp, unsigned int cmd, case RING_BUFFER_COMPAT_SNAPSHOT: return lib_ring_buffer_snapshot(buf, &buf->cons_snapshot, &buf->prod_snapshot); + case RING_BUFFER_COMPAT_SNAPSHOT_SAMPLE_POSITIONS: + return lib_ring_buffer_snapshot_sample_positions(buf, + &buf->cons_snapshot, &buf->prod_snapshot); case RING_BUFFER_COMPAT_SNAPSHOT_GET_CONSUMED: return compat_put_ulong(buf->cons_snapshot, arg); case RING_BUFFER_COMPAT_SNAPSHOT_GET_PRODUCED: @@ -410,6 +424,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 +461,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);