X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=src%2Flttng-events.c;h=2c1e2ae1bb5525e741c496b7c19b0d58d4606b1e;hb=935150def277f182d0e189068ae4d45a48e2b927;hp=cd0c5eb7e89348ed74f98c7af1b05764adc83d53;hpb=1b917d6b45b8d2573462b43b407663ac9352e733;p=lttng-modules.git diff --git a/src/lttng-events.c b/src/lttng-events.c index cd0c5eb7..2c1e2ae1 100644 --- a/src/lttng-events.c +++ b/src/lttng-events.c @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include @@ -41,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -596,8 +596,6 @@ struct lttng_event *_lttng_event_create(struct lttng_channel *chan, struct lttng_event *event; const char *event_name; struct hlist_head *head; - size_t name_len; - uint32_t hash; int ret; if (chan->free_event_id == -1U) { @@ -622,9 +620,9 @@ struct lttng_event *_lttng_event_create(struct lttng_channel *chan, ret = -EINVAL; goto type_error; } - name_len = strlen(event_name); - hash = jhash(event_name, name_len, 0); - head = &session->events_ht.table[hash & (LTTNG_EVENT_HT_SIZE - 1)]; + + head = utils_borrow_hash_table_bucket(session->events_ht.table, + LTTNG_EVENT_HT_SIZE, event_name); lttng_hlist_for_each_entry(event, head, hlist) { WARN_ON_ONCE(!event->desc); if (!strncmp(event->desc->name, event_name, @@ -653,7 +651,7 @@ struct lttng_event *_lttng_event_create(struct lttng_channel *chan, /* Event will be enabled by enabler sync. */ event->enabled = 0; event->registered = 0; - event->desc = lttng_event_get(event_name); + event->desc = lttng_event_desc_get(event_name); if (!event->desc) { ret = -ENOENT; goto register_error; @@ -925,7 +923,7 @@ void _lttng_event_destroy(struct lttng_event *event) { switch (event->instrumentation) { case LTTNG_KERNEL_TRACEPOINT: - lttng_event_put(event->desc); + lttng_event_desc_put(event->desc); break; case LTTNG_KERNEL_KPROBE: module_put(event->desc->owner); @@ -1363,23 +1361,19 @@ void lttng_create_tracepoint_event_if_missing(struct lttng_event_enabler *event_ for (i = 0; i < probe_desc->nr_events; i++) { int found = 0; struct hlist_head *head; - const char *event_name; - size_t name_len; - uint32_t hash; struct lttng_event *event; desc = probe_desc->event_desc[i]; if (!lttng_desc_match_enabler(desc, lttng_event_enabler_as_enabler(event_enabler))) continue; - event_name = desc->name; - name_len = strlen(event_name); /* * Check if already created. */ - hash = jhash(event_name, name_len, 0); - head = &session->events_ht.table[hash & (LTTNG_EVENT_HT_SIZE - 1)]; + head = utils_borrow_hash_table_bucket( + session->events_ht.table, LTTNG_EVENT_HT_SIZE, + desc->name); lttng_hlist_for_each_entry(event, head, hlist) { if (event->desc == desc && event->chan == event_enabler->chan) @@ -1484,7 +1478,10 @@ int lttng_event_enabler_ref_events(struct lttng_event_enabler *event_enabler) /* * Link filter bytecodes if not linked yet. */ - lttng_event_enabler_link_bytecode(event, event_enabler); + lttng_enabler_link_bytecode(event->desc, + lttng_static_ctx, + &event->bytecode_runtime_head, + lttng_event_enabler_as_enabler(event_enabler)); /* TODO: merge event context. */ }