X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Findex%2Findex.hpp;fp=src%2Fcommon%2Findex%2Findex.hpp;h=00d8203d3db606e2b78b313fa5a9b677fe63bb68;hb=c9e313bc594f40a86eed237dce222c0fc99c957f;hp=0000000000000000000000000000000000000000;hpb=4878de5c7deb512bbdac4fdfc498907efa06fb7c;p=lttng-tools.git diff --git a/src/common/index/index.hpp b/src/common/index/index.hpp new file mode 100644 index 000000000..00d8203d3 --- /dev/null +++ b/src/common/index/index.hpp @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2013 Julien Desfossez + * Copyright (C) 2013 David Goulet + * Copyright (C) 2016 Mathieu Desnoyers + * + * SPDX-License-Identifier: GPL-2.0-only + * + */ + +#ifndef _INDEX_H +#define _INDEX_H + +#include +#include + +#include "ctf-index.hpp" +#include +#include + +struct lttng_index_file { + struct fs_handle *file; + uint32_t major; + uint32_t minor; + uint32_t element_len; + struct lttng_trace_chunk *trace_chunk; + struct urcu_ref ref; +}; + +/* + * create and open have refcount of 1. Use put to decrement the + * refcount. Destroys when reaching 0. Use "get" to increment refcount. + */ +enum lttng_trace_chunk_status lttng_index_file_create_from_trace_chunk( + struct lttng_trace_chunk *chunk, + const char *channel_path, const char *stream_name, + uint64_t stream_file_size, uint64_t stream_count, + uint32_t index_major, uint32_t index_minor, + bool unlink_existing_file, struct lttng_index_file **file); + +enum lttng_trace_chunk_status lttng_index_file_create_from_trace_chunk_read_only( + struct lttng_trace_chunk *chunk, + const char *channel_path, const char *stream_name, + uint64_t stream_file_size, uint64_t stream_file_index, + uint32_t index_major, uint32_t index_minor, + bool expect_no_file, struct lttng_index_file **file); + +int lttng_index_file_write(const struct lttng_index_file *index_file, + const struct ctf_packet_index *element); +int lttng_index_file_read(const struct lttng_index_file *index_file, + struct ctf_packet_index *element); + +void lttng_index_file_get(struct lttng_index_file *index_file); +void lttng_index_file_put(struct lttng_index_file *index_file); + +#endif /* _INDEX_H */