X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=lib%2Fringbuffer%2Fring_buffer_vfs.c;h=15da212d3fa313e3b3a027b2638132cacbb1db40;hb=d723e9056812fdee222f1156f45f7a43393c5863;hp=dae73de398c5ea38dba90f0bd384d5f21f327d30;hpb=b3b8072b02b4f1917a0254577c48301e8f44c210;p=lttng-modules.git diff --git a/lib/ringbuffer/ring_buffer_vfs.c b/lib/ringbuffer/ring_buffer_vfs.c index dae73de3..15da212d 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) { @@ -190,6 +191,15 @@ long lib_ring_buffer_ioctl(struct file *filp, unsigned int cmd, switch (cmd) { case RING_BUFFER_SNAPSHOT: + /* + * First, ensure we perform a "final" flush onto the + * stream. This will ensure we create a packet of + * padding if we encounter an empty packet. This ensures + * the time-stamps right before the snapshot is used as + * end of packet timestamp. + */ + if (!buf->quiescent) + lib_ring_buffer_switch_remote_empty(buf); return lib_ring_buffer_snapshot(buf, &buf->cons_snapshot, &buf->prod_snapshot); case RING_BUFFER_SNAPSHOT_GET_CONSUMED: @@ -319,6 +329,15 @@ long lib_ring_buffer_compat_ioctl(struct file *filp, unsigned int cmd, switch (cmd) { case RING_BUFFER_COMPAT_SNAPSHOT: + /* + * First, ensure we perform a "final" flush onto the + * stream. This will ensure we create a packet of + * padding if we encounter an empty packet. This ensures + * the time-stamps right before the snapshot is used as + * end of packet timestamp. + */ + if (!buf->quiescent) + lib_ring_buffer_switch_remote_empty(buf); return lib_ring_buffer_snapshot(buf, &buf->cons_snapshot, &buf->prod_snapshot); case RING_BUFFER_COMPAT_SNAPSHOT_GET_CONSUMED: @@ -448,3 +467,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);