* Copyright 2010 (c) - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
*
* Holds LTTng per-session event registry.
+ *
+ * Dual LGPL v2.1/GPL v2 license.
*/
#include <linux/module.h>
if (!chan)
goto nomem;
chan->session = session;
- init_waitqueue_head(&chan->notify_wait);
chan->id = session->free_chan_id++;
/*
* Note: the channel creation op already writes into the packet
* we need to bail out after timeout or being
* interrupted.
*/
- waitret = wait_event_interruptible_timeout(*chan->ops->get_reader_wait_queue(chan),
+ waitret = wait_event_interruptible_timeout(*chan->ops->get_reader_wait_queue(chan->chan),
({
ret = chan->ops->event_reserve(&ctx, 0);
ret != -ENOBUFS || !ret;
ret = waitret;
goto end;
}
- chan->ops->event_write(&ctx, &str[pos], len);
+ chan->ops->event_write(&ctx, &str[pos], reserve_len);
chan->ops->event_commit(&ctx);
}
end:
length_type = &field->type.u.sequence.length_type;
ret = lttng_metadata_printf(session,
" integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u;%s } __%s_length;\n",
- " integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u;%s } %s[ __%s_length ];\n",
length_type->u.basic.integer.size,
(unsigned int) length_type->u.basic.integer.alignment,
length_type->u.basic.integer.signedness,
#else
length_type->u.basic.integer.reverse_byte_order ? " byte_order = be;" : "",
#endif
- field->name,
+ field->name);
+ if (ret)
+ return ret;
+
+ ret = lttng_metadata_printf(session,
+ " integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u;%s } %s[ __%s_length ];\n",
elem_type->u.basic.integer.size,
(unsigned int) elem_type->u.basic.integer.alignment,
elem_type->u.basic.integer.signedness,
elem_type->u.basic.integer.reverse_byte_order ? " byte_order = be;" : "",
#endif
field->name,
- field->name
- );
+ field->name);
break;
}