#include <usterr-signal-safe.h>
#include "../libringbuffer/frontend_types.h"
+#include "../libringbuffer/frontend.h"
#include "../libringbuffer/shm.h"
#include "../libcounter/counter.h"
#include "tracepoint-internal.h"
struct lttng_ust_lib_ring_buffer_channel *chan;
unsigned int nr_streams, exp_streams;
- chan = lttng_chan->chan;
- nr_streams = channel_handle_get_nr_streams(lttng_chan->handle);
+ chan = lttng_chan->priv->rb_chan;
+ nr_streams = channel_handle_get_nr_streams(lttng_chan->priv->rb_chan->handle);
exp_streams = chan->nr_streams;
return nr_streams == exp_streams;
}
}
static
-long lttng_abi_tracer_version(int objd,
+long lttng_abi_tracer_version(int objd __attribute__((unused)),
struct lttng_ust_abi_tracer_version *v)
{
v->major = LTTNG_UST_MAJOR_VERSION;
}
static
-long lttng_abi_add_context(int objd,
+long lttng_abi_add_context(int objd __attribute__((unused)),
struct lttng_ust_abi_context *context_param,
union lttng_ust_abi_args *uargs,
struct lttng_ust_ctx **ctx, struct lttng_ust_session *session)
goto alloc_error;
}
+ if (lttng_ust_session_uuid_validate(session, lttng_chan_config->uuid)) {
+ ret = -EINVAL;
+ goto uuid_error;
+ }
+
/* Lookup transport name */
switch (type) {
case LTTNG_UST_ABI_CHAN_PER_CPU:
lttng_chan_buf->priv->parent.tstate = 1;
lttng_chan_buf->priv->ctx = NULL;
+ lttng_chan_buf->priv->rb_chan = chan;
lttng_chan_buf->ops = &transport->ops;
- lttng_chan_buf->chan = chan;
- lttng_chan_buf->handle = channel_handle;
memcpy(&chan->backend.config,
transport->client_config,
/* error path after channel was created */
objd_error:
notransport:
+uuid_error:
alloc_error:
channel_destroy(chan, channel_handle, 0);
lttng_ust_free_channel_common(lttng_chan_buf->parent);
static
long lttng_event_notifier_enabler_cmd(int objd, unsigned int cmd, unsigned long arg,
- union lttng_ust_abi_args *uargs, void *owner)
+ union lttng_ust_abi_args *uargs __attribute__((unused)),
+ void *owner __attribute__((unused)))
{
struct lttng_event_notifier_enabler *event_notifier_enabler = objd_private(objd);
switch (cmd) {
*/
static
long lttng_event_notifier_group_error_counter_cmd(int objd, unsigned int cmd, unsigned long arg,
- union lttng_ust_abi_args *uargs, void *owner)
+ union lttng_ust_abi_args *uargs, void *owner __attribute__((unused)))
{
int ret;
struct lttng_counter *counter = objd_private(objd);
return ret;
}
-__attribute__((visibility("hidden")))
+int lttng_release_event_notifier_group_error_counter(int objd)
+ __attribute__((visibility("hidden")));
int lttng_release_event_notifier_group_error_counter(int objd)
{
struct lttng_counter *counter = objd_private(objd);
static
long lttng_tracepoint_list_cmd(int objd, unsigned int cmd, unsigned long arg,
- union lttng_ust_abi_args *uargs, void *owner)
+ union lttng_ust_abi_args *uargs __attribute__((unused)),
+ void *owner __attribute__((unused)))
{
struct lttng_ust_tracepoint_list *list = objd_private(objd);
struct lttng_ust_abi_tracepoint_iter *tp =
static
long lttng_tracepoint_field_list_cmd(int objd, unsigned int cmd,
- unsigned long arg, union lttng_ust_abi_args *uargs, void *owner)
+ unsigned long arg __attribute__((unused)), union lttng_ust_abi_args *uargs,
+ void *owner __attribute__((unused)))
{
struct lttng_ust_field_list *list = objd_private(objd);
struct lttng_ust_abi_field_iter *tp = &uargs->field_list.entry;
static
int lttng_abi_map_stream(int channel_objd, struct lttng_ust_abi_stream *info,
- union lttng_ust_abi_args *uargs, void *owner)
+ union lttng_ust_abi_args *uargs, void *owner __attribute__((unused)))
{
struct lttng_ust_channel_buffer *lttng_chan_buf = objd_private(channel_objd);
int ret;
- ret = channel_handle_add_stream(lttng_chan_buf->handle,
+ ret = channel_handle_add_stream(lttng_chan_buf->priv->rb_chan->handle,
uargs->stream.shm_fd, uargs->stream.wakeup_fd,
info->stream_nr, info->len);
if (ret)
case LTTNG_UST_ABI_DISABLE:
return lttng_channel_disable(lttng_chan_buf->parent);
case LTTNG_UST_ABI_FLUSH_BUFFER:
- return lttng_chan_buf->ops->priv->flush_buffer(lttng_chan_buf->chan,
- lttng_chan_buf->handle);
+ return lttng_chan_buf->ops->priv->flush_buffer(lttng_chan_buf);
default:
return -EINVAL;
}
*/
static
long lttng_event_enabler_cmd(int objd, unsigned int cmd, unsigned long arg,
- union lttng_ust_abi_args *uargs, void *owner)
+ union lttng_ust_abi_args *uargs __attribute__((unused)),
+ void *owner __attribute__((unused)))
{
struct lttng_event_enabler *enabler = objd_private(objd);