/*
- * lttng-ring-buffer-client.h
- *
- * LTTng lib ring buffer client template.
+ * SPDX-License-Identifier: LGPL-2.1-only
*
* Copyright (C) 2010-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; only
- * version 2.1 of the License.
- *
- * This library 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 library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * LTTng lib ring buffer client template.
*/
+#include <stddef.h>
#include <stdint.h>
-#include <lttng/ust-events.h>
-#include "lttng/bitfield.h"
+
+#include <ust-events-internal.h>
+#include "ust-bitfield.h"
+#include "ust-compat.h"
#include "lttng-tracer.h"
#include "../libringbuffer/frontend_types.h"
size_t record_header_size(const struct lttng_ust_lib_ring_buffer_config *config,
struct channel *chan, size_t offset,
size_t *pre_header_padding,
- struct lttng_ust_lib_ring_buffer_ctx *ctx)
+ struct lttng_ust_lib_ring_buffer_ctx *ctx,
+ void *client_ctx)
{
return 0;
}
size_t client_record_header_size(const struct lttng_ust_lib_ring_buffer_config *config,
struct channel *chan, size_t offset,
size_t *pre_header_padding,
- struct lttng_ust_lib_ring_buffer_ctx *ctx)
+ struct lttng_ust_lib_ring_buffer_ctx *ctx,
+ void *client_ctx)
{
return 0;
}
if (!header)
return;
header->content_size = data_size * CHAR_BIT; /* in bits */
- header->packet_size = PAGE_ALIGN(data_size) * CHAR_BIT; /* in bits */
+ header->packet_size = LTTNG_UST_PAGE_ALIGN(data_size) * CHAR_BIT; /* in bits */
/*
* We do not care about the records lost count, because the metadata
* channel waits and retry.
.cb_ptr = &client_cb.parent,
};
-const struct lttng_ust_client_lib_ring_buffer_client_cb *LTTNG_CLIENT_CALLBACKS = &client_cb;
-
static
struct lttng_channel *_channel_create(const char *name,
void *buf_addr,
unsigned int read_timer_interval,
unsigned char *uuid,
uint32_t chan_id,
- const int *stream_fds, int nr_stream_fds)
+ const int *stream_fds, int nr_stream_fds,
+ int64_t blocking_timeout)
{
struct lttng_channel chan_priv_init;
struct lttng_ust_shm_handle *handle;
&chan_priv_init,
buf_addr, subbuf_size, num_subbuf,
switch_timer_interval, read_timer_interval,
- stream_fds, nr_stream_fds);
+ stream_fds, nr_stream_fds, blocking_timeout);
if (!handle)
return NULL;
lttng_chan = priv;
{
int ret;
- ret = lib_ring_buffer_reserve(&client_config, ctx);
+ ret = lib_ring_buffer_reserve(&client_config, ctx, NULL);
if (ret)
return ret;
- if (caa_likely(ctx->ctx_len
- >= sizeof(struct lttng_ust_lib_ring_buffer_ctx))) {
- if (lib_ring_buffer_backend_get_pages(&client_config, ctx,
- &ctx->backend_pages))
- return -EPERM;
- }
+ if (lib_ring_buffer_backend_get_pages(&client_config, ctx,
+ &ctx->backend_pages))
+ return -EPERM;
return 0;
}
static
size_t lttng_packet_avail_size(struct channel *chan, struct lttng_ust_shm_handle *handle)
-
{
unsigned long o_begin;
struct lttng_ust_lib_ring_buffer *buf;