X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fbuffer-view.h;fp=src%2Fcommon%2Fbuffer-view.h;h=7d03b41dd1bb80ece8ad109ddd8e40a898e37921;hp=0000000000000000000000000000000000000000;hb=01dc0eed91e5c7db3f12beda894cb3d9cc7a4fa1;hpb=5966417eba59c9014c1f67ae37257e7266e647b5 diff --git a/src/common/buffer-view.h b/src/common/buffer-view.h new file mode 100644 index 000000000..7d03b41dd --- /dev/null +++ b/src/common/buffer-view.h @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2017 - Jérémie Galarneau + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License, version 2.1 only, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef LTTNG_BUFFER_VIEW_H +#define LTTNG_BUFFER_VIEW_H + +#include +#include + +struct lttng_dynamic_buffer; + +struct lttng_buffer_view { + const char *data; + size_t size; +}; + +/** + * Return a buffer view referencing a subset of the memory referenced by another + * view. + * + * @src Source view to reference + * @offset Offset to apply to the source memory content + * @len Length of the memory contents to reference. Passing -1 will + * cause the view to reference the whole view from the offset + * provided. + * + * Note that a buffer view never assumes the ownership of the memory it + * references. + */ +struct lttng_buffer_view lttng_buffer_view_from_view( + const struct lttng_buffer_view *src, size_t offset, + ptrdiff_t len); + +/** + * Return a buffer view referencing a subset of the memory referenced by a + * dynamic buffer. + * + * @src Source dynamic buffer to reference + * @offset Offset to apply to the source memory content + * @len Length of the memory contents to reference. Passing -1 will + * cause the view to reference the whole dynamic buffer from the + * offset provided. + * + * Note that a buffer view never assumes the ownership of the memory it + * references. + */ +struct lttng_buffer_view lttng_buffer_view_from_dynamic_buffer( + const struct lttng_dynamic_buffer *src, size_t offset, + ptrdiff_t len); + +#endif /* LTTNG_BUFFER_VIEW_H */