extern
void lib_ring_buffer_switch_remote(struct lib_ring_buffer *buf);
-extern
-void lib_ring_buffer_switch_remote_empty(struct lib_ring_buffer *buf);
-
/* Buffer write helpers */
static inline
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);
/*
}
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
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:
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:
return put_u64(stream->version, arg);
}
- case RING_BUFFER_SNAPSHOT:
- {
- /*
- * Force the buffer to quiescent so the ring buffer
- * don't attempt to perform a SWITCH_FLUSH, which would
- * desynchronize the client accounting of the amount of
- * data available in the buffer from the ring buffer
- * view.
- */
- buf->quiescent = true;
- break;
- }
default:
break;
}
return put_u64(stream->version, arg);
}
- case RING_BUFFER_SNAPSHOT:
- {
- /*
- * Force the buffer to quiescent so the ring buffer
- * don't attempt to perform a SWITCH_FLUSH, which would
- * desynchronize the client accounting of the amount of
- * data available in the buffer from the ring buffer
- * view.
- */
- buf->quiescent = true;
- break;
- }
default:
break;
}