X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lib%2Fringbuffer%2Fring_buffer_vfs.c;h=97be835655a8c0f665526f8471aa1030e140b561;hb=4b691a7da344d131db8786135f60ddca95956457;hp=15da212d3fa313e3b3a027b2638132cacbb1db40;hpb=7cf44d034bdda1896f6b0c6374c90c06d45ee4fd;p=lttng-modules.git diff --git a/lib/ringbuffer/ring_buffer_vfs.c b/lib/ringbuffer/ring_buffer_vfs.c index 15da212d..97be8356 100644 --- a/lib/ringbuffer/ring_buffer_vfs.c +++ b/lib/ringbuffer/ring_buffer_vfs.c @@ -191,17 +191,11 @@ 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_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: @@ -279,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; } @@ -329,17 +326,11 @@ 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_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: @@ -433,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; }