X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lib%2Fringbuffer%2Fring_buffer_frontend.c;h=8a6a1883a96dfa8ed923c7c48678a1f1a3f8b201;hb=1e8d53a9f3e8b6d7a7434a442d449e3ccf9c12b0;hp=68b62382e9fc87c2a307887cc67e144dfe1528a8;hpb=2aa1301314bd42132f49b8ebffc614bea9575540;p=lttng-modules.git diff --git a/lib/ringbuffer/ring_buffer_frontend.c b/lib/ringbuffer/ring_buffer_frontend.c index 68b62382..8a6a1883 100644 --- a/lib/ringbuffer/ring_buffer_frontend.c +++ b/lib/ringbuffer/ring_buffer_frontend.c @@ -1075,6 +1075,15 @@ int lib_ring_buffer_snapshot(struct lib_ring_buffer *buf, unsigned long consumed_cur, write_offset; int finalized; + /* + * 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(buf, SWITCH_FLUSH); + retry: finalized = ACCESS_ONCE(buf->finalized); /* @@ -1839,13 +1848,6 @@ void lib_ring_buffer_switch_remote(struct lib_ring_buffer *buf) } EXPORT_SYMBOL_GPL(lib_ring_buffer_switch_remote); -/* Switch sub-buffer even if current sub-buffer is empty. */ -void lib_ring_buffer_switch_remote_empty(struct lib_ring_buffer *buf) -{ - _lib_ring_buffer_switch_remote(buf, SWITCH_FLUSH); -} -EXPORT_SYMBOL_GPL(lib_ring_buffer_switch_remote_empty); - /* * Returns : * 0 if ok