struct consumer_metadata_cache {
char *data;
uint64_t cache_alloc_size;
- /*
- * How many bytes from the cache were already sent to the ring buffer.
- */
- uint64_t rb_pushed;
- /*
- * How many bytes are written in the buffer (excluding the wholes).
- */
- uint64_t total_bytes_written;
/*
* The upper-limit of data written inside the buffer.
*
* With the total_bytes_written it allows us to keep track of when the
* cache contains contiguous metadata ready to be sent to the RB.
- * The metadata cache updates must not overlap.
+ * All cached data is contiguous.
*/
uint64_t max_offset;
/*
* Lock to update the metadata cache and push into the ring_buffer
* (ustctl_write_metadata_to_channel).
+ *
+ * This is nested INSIDE the consumer_data lock.
*/
pthread_mutex_t lock;
};
int consumer_metadata_cache_allocate(struct lttng_consumer_channel *channel);
void consumer_metadata_cache_destroy(struct lttng_consumer_channel *channel);
int consumer_metadata_cache_flushed(struct lttng_consumer_channel *channel,
- uint64_t offset);
+ uint64_t offset, int timer);
#endif /* CONSUMER_METADATA_CACHE_H */