*/
static
int extract_userspace_probe_offset_function_elf(
- struct lttng_userspace_probe_location *probe_location,
+ const struct lttng_userspace_probe_location *probe_location,
struct ltt_kernel_session *session, uint64_t *offset)
{
int fd;
int ret = 0;
const char *symbol = NULL;
- struct lttng_userspace_probe_location_lookup_method *lookup = NULL;
+ const struct lttng_userspace_probe_location_lookup_method *lookup = NULL;
enum lttng_userspace_probe_location_lookup_method_type lookup_method_type;
-
assert(lttng_userspace_probe_location_get_type(probe_location) ==
LTTNG_USERSPACE_PROBE_LOCATION_TYPE_FUNCTION);
*/
static
int extract_userspace_probe_offset_tracepoint_sdt(
- struct lttng_userspace_probe_location *probe_location,
+ const struct lttng_userspace_probe_location *probe_location,
struct ltt_kernel_session *session, uint64_t **offsets,
uint32_t *offsets_count)
{
enum lttng_userspace_probe_location_lookup_method_type lookup_method_type;
- struct lttng_userspace_probe_location_lookup_method *lookup = NULL;
+ const struct lttng_userspace_probe_location_lookup_method *lookup = NULL;
const char *probe_name = NULL, *provider_name = NULL;
int ret = 0;
int fd, i;
int userspace_probe_add_callsites(struct lttng_event *ev,
struct ltt_kernel_session *session, int fd)
{
- struct lttng_userspace_probe_location_lookup_method *lookup_method = NULL;
+ const struct lttng_userspace_probe_location_lookup_method *lookup_method = NULL;
enum lttng_userspace_probe_location_lookup_method_type type;
- struct lttng_userspace_probe_location *location = NULL;
+ const struct lttng_userspace_probe_location *location = NULL;
int ret;
assert(ev);
}
}
+ if (ev->type == LTTNG_EVENT_USERSPACE_PROBE) {
+ ret = userspace_probe_add_callsites(ev, channel->session, event->fd);
+ if (ret) {
+ goto add_callsite_error;
+ }
+ }
+
err = kernctl_enable(event->fd);
if (err < 0) {
switch (-err) {
return 0;
+add_callsite_error:
enable_error:
filter_error:
{
socket, node.node) {
struct ltt_kernel_channel *chan;
- /*
- * Account the metadata channel first to make sure the
- * number of channels waiting for a rotation cannot
- * reach 0 before we complete the iteration over all
- * the channels.
- */
- ret = rotate_add_channel_pending(ksess->metadata->key,
- LTTNG_DOMAIN_KERNEL, session);
- if (ret < 0) {
- ret = LTTNG_ERR_KERN_CONSUMER_FAIL;
- goto error;
- }
-
/* For each channel, ask the consumer to rotate it. */
cds_list_for_each_entry(chan, &ksess->channel_list.head, list) {
- ret = rotate_add_channel_pending(chan->key,
- LTTNG_DOMAIN_KERNEL, session);
- if (ret < 0) {
- ret = LTTNG_ERR_KERN_CONSUMER_FAIL;
- goto error;
- }
-
- DBG("Rotate channel %" PRIu64 ", session %s", chan->key, session->name);
+ DBG("Rotate kernel channel %" PRIu64 ", session %s",
+ chan->key, session->name);
ret = consumer_rotate_channel(socket, chan->key,
ksess->uid, ksess->gid, ksess->consumer,
ksess->consumer->subdir,
/* is_metadata_channel */ false,
- session->current_archive_id,
- &session->rotate_pending_relay);
+ session->current_archive_id);
if (ret < 0) {
ret = LTTNG_ERR_KERN_CONSUMER_FAIL;
goto error;
ksess->uid, ksess->gid, ksess->consumer,
ksess->consumer->subdir,
/* is_metadata_channel */ true,
- session->current_archive_id,
- &session->rotate_pending_relay);
+ session->current_archive_id);
if (ret < 0) {
ret = LTTNG_ERR_KERN_CONSUMER_FAIL;
goto error;