Clean-up: ust-consumer: pass metadata cache to its write method
[lttng-tools.git] / src / common / consumer / consumer-metadata-cache.h
1 /*
2 * Copyright (C) 2013 Julien Desfossez <jdesfossez@efficios.com>
3 * Copyright (C) 2013 David Goulet <dgoulet@efficios.com>
4 *
5 * SPDX-License-Identifier: GPL-2.0-only
6 *
7 */
8
9 #ifndef CONSUMER_METADATA_CACHE_H
10 #define CONSUMER_METADATA_CACHE_H
11
12 #include <common/consumer/consumer.h>
13
14 enum consumer_metadata_cache_write_status {
15 CONSUMER_METADATA_CACHE_WRITE_STATUS_ERROR = -1,
16 /*
17 * New metadata content was appended to the cache successfully.
18 * Previously available content remains valid.
19 */
20 CONSUMER_METADATA_CACHE_WRITE_STATUS_APPENDED_CONTENT = 0,
21 /*
22 * The new content pushed to the cache invalidated the content that
23 * was already present. The contents of the cache should be re-read.
24 */
25 CONSUMER_METADATA_CACHE_WRITE_STATUS_INVALIDATED,
26 /*
27 * A metadata cache write can simply overwrite an already existing
28 * section of the cache (and it should be a write-through with identical
29 * data). From the caller's standpoint, there is no change to the state
30 * of the cache.
31 */
32 CONSUMER_METADATA_CACHE_WRITE_STATUS_NO_CHANGE,
33 };
34
35 struct consumer_metadata_cache {
36 char *data;
37 uint64_t cache_alloc_size;
38 /*
39 * Current version of the metadata cache.
40 */
41 uint64_t version;
42 /*
43 * The upper-limit of data written inside the buffer.
44 *
45 * With the total_bytes_written it allows us to keep track of when the
46 * cache contains contiguous metadata ready to be sent to the RB.
47 * All cached data is contiguous.
48 */
49 uint64_t max_offset;
50 /*
51 * Lock to update the metadata cache and push into the ring_buffer
52 * (ustctl_write_metadata_to_channel).
53 *
54 * This is nested INSIDE the consumer_data lock.
55 */
56 pthread_mutex_t lock;
57 };
58
59 enum consumer_metadata_cache_write_status
60 consumer_metadata_cache_write(struct consumer_metadata_cache *cache,
61 unsigned int offset, unsigned int len, uint64_t version,
62 const char *data);
63 int consumer_metadata_cache_allocate(struct lttng_consumer_channel *channel);
64 void consumer_metadata_cache_destroy(struct lttng_consumer_channel *channel);
65 int consumer_metadata_cache_flushed(struct lttng_consumer_channel *channel,
66 uint64_t offset, int timer);
67
68 #endif /* CONSUMER_METADATA_CACHE_H */
This page took 0.029873 seconds and 4 git commands to generate.