X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fevent-rule%2Fevent-rule.c;h=7e3f7248ee3a562448ebf0574443eee5048b834a;hb=97535efaa975ca52bf02c2d5e76351bfd2e3defa;hp=e02a1c320d05fc6f25c5ad3d265b2d74a37bd12f;hpb=695f70446965aeac8b1118bb08d572630c96114d;p=lttng-tools.git diff --git a/src/common/event-rule/event-rule.c b/src/common/event-rule/event-rule.c index e02a1c320..7e3f7248e 100644 --- a/src/common/event-rule/event-rule.c +++ b/src/common/event-rule/event-rule.c @@ -6,21 +6,21 @@ * */ -#include #include -#include -#include -#include #include #include +#include +#include +#include +#include #include +#include #include #include -#include -#include -#include #include #include +#include +#include #include #include @@ -30,7 +30,6 @@ enum lttng_event_rule_type lttng_event_rule_get_type( return event_rule ? event_rule->type : LTTNG_EVENT_RULE_TYPE_UNKNOWN; } -LTTNG_HIDDEN enum lttng_domain_type lttng_event_rule_get_domain_type( const struct lttng_event_rule *event_rule) { @@ -51,7 +50,6 @@ enum lttng_domain_type lttng_event_rule_get_domain_type( break; case LTTNG_EVENT_RULE_TYPE_KERNEL_SYSCALL: case LTTNG_EVENT_RULE_TYPE_KERNEL_KPROBE: - case LTTNG_EVENT_RULE_TYPE_KERNEL_FUNCTION: case LTTNG_EVENT_RULE_TYPE_KERNEL_UPROBE: case LTTNG_EVENT_RULE_TYPE_KERNEL_TRACEPOINT: domain_type = LTTNG_DOMAIN_KERNEL; @@ -69,7 +67,7 @@ static void lttng_event_rule_release(struct urcu_ref *ref) struct lttng_event_rule *event_rule = container_of(ref, typeof(*event_rule), ref); - assert(event_rule->destroy); + LTTNG_ASSERT(event_rule->destroy); event_rule->destroy(event_rule); } @@ -78,7 +76,6 @@ void lttng_event_rule_destroy(struct lttng_event_rule *event_rule) lttng_event_rule_put(event_rule); } -LTTNG_HIDDEN bool lttng_event_rule_validate(const struct lttng_event_rule *event_rule) { bool valid; @@ -99,7 +96,6 @@ end: return valid; } -LTTNG_HIDDEN int lttng_event_rule_serialize(const struct lttng_event_rule *event_rule, struct lttng_payload *payload) { @@ -127,7 +123,6 @@ end: return ret; } -LTTNG_HIDDEN bool lttng_event_rule_is_equal(const struct lttng_event_rule *a, const struct lttng_event_rule *b) { @@ -151,7 +146,6 @@ end: return is_equal; } -LTTNG_HIDDEN ssize_t lttng_event_rule_create_from_payload( struct lttng_payload_view *view, struct lttng_event_rule **event_rule) @@ -181,9 +175,6 @@ ssize_t lttng_event_rule_create_from_payload( case LTTNG_EVENT_RULE_TYPE_KERNEL_KPROBE: create_from_payload = lttng_event_rule_kernel_kprobe_create_from_payload; break; - case LTTNG_EVENT_RULE_TYPE_KERNEL_FUNCTION: - /* TODO */ - break; case LTTNG_EVENT_RULE_TYPE_KERNEL_UPROBE: create_from_payload = lttng_event_rule_kernel_uprobe_create_from_payload; break; @@ -218,7 +209,7 @@ ssize_t lttng_event_rule_create_from_payload( goto end; } - assert(create_from_payload); + LTTNG_ASSERT(create_from_payload); { struct lttng_payload_view child_view = @@ -243,7 +234,6 @@ end: return ret; } -LTTNG_HIDDEN void lttng_event_rule_init(struct lttng_event_rule *event_rule, enum lttng_event_rule_type type) { @@ -251,65 +241,57 @@ void lttng_event_rule_init(struct lttng_event_rule *event_rule, event_rule->type = type; } -LTTNG_HIDDEN bool lttng_event_rule_get(struct lttng_event_rule *event_rule) { return urcu_ref_get_unless_zero(&event_rule->ref); } -LTTNG_HIDDEN void lttng_event_rule_put(struct lttng_event_rule *event_rule) { if (!event_rule) { return; } - assert(event_rule->ref.refcount); + LTTNG_ASSERT(event_rule->ref.refcount); urcu_ref_put(&event_rule->ref, lttng_event_rule_release); } -LTTNG_HIDDEN enum lttng_error_code lttng_event_rule_generate_filter_bytecode( struct lttng_event_rule *rule, const struct lttng_credentials *creds) { - assert(rule->generate_filter_bytecode); + LTTNG_ASSERT(rule->generate_filter_bytecode); return rule->generate_filter_bytecode(rule, creds); } -LTTNG_HIDDEN const char *lttng_event_rule_get_filter(const struct lttng_event_rule *rule) { - assert(rule->get_filter); + LTTNG_ASSERT(rule->get_filter); return rule->get_filter(rule); } -LTTNG_HIDDEN const struct lttng_bytecode *lttng_event_rule_get_filter_bytecode( const struct lttng_event_rule *rule) { - assert(rule->get_filter_bytecode); + LTTNG_ASSERT(rule->get_filter_bytecode); return rule->get_filter_bytecode(rule); } -LTTNG_HIDDEN enum lttng_event_rule_generate_exclusions_status lttng_event_rule_generate_exclusions(const struct lttng_event_rule *rule, struct lttng_event_exclusion **exclusions) { - assert(rule->generate_exclusions); + LTTNG_ASSERT(rule->generate_exclusions); return rule->generate_exclusions(rule, exclusions); } -LTTNG_HIDDEN struct lttng_event *lttng_event_rule_generate_lttng_event( const struct lttng_event_rule *rule) { - assert(rule->generate_lttng_event); + LTTNG_ASSERT(rule->generate_lttng_event); return rule->generate_lttng_event(rule); } -LTTNG_HIDDEN bool lttng_event_rule_targets_agent_domain(const struct lttng_event_rule *rule) { bool targets_agent_domain = false; @@ -341,8 +323,6 @@ const char *lttng_event_rule_type_str(enum lttng_event_rule_type type) return "kernel syscall"; case LTTNG_EVENT_RULE_TYPE_KERNEL_KPROBE: return "kernel kprobe"; - case LTTNG_EVENT_RULE_TYPE_KERNEL_FUNCTION: - return "function"; case LTTNG_EVENT_RULE_TYPE_KERNEL_UPROBE: return "kernel uprobe"; case LTTNG_EVENT_RULE_TYPE_KERNEL_TRACEPOINT: @@ -361,9 +341,45 @@ const char *lttng_event_rule_type_str(enum lttng_event_rule_type type) } } -LTTNG_HIDDEN unsigned long lttng_event_rule_hash(const struct lttng_event_rule *rule) { - assert(rule->hash); + LTTNG_ASSERT(rule->hash); return rule->hash(rule); } + +enum lttng_error_code lttng_event_rule_mi_serialize( + const struct lttng_event_rule *rule, struct mi_writer *writer) +{ + int ret; + enum lttng_error_code ret_code; + + LTTNG_ASSERT(rule); + LTTNG_ASSERT(writer); + LTTNG_ASSERT(rule->mi_serialize); + + /* Open event rule element. */ + ret = mi_lttng_writer_open_element(writer, mi_lttng_element_event_rule); + if (ret) { + goto mi_error; + } + + /* Serialize underlying event rule. */ + ret_code = rule->mi_serialize(rule, writer); + if (ret_code != LTTNG_OK) { + goto end; + } + + /* Close event rule element. */ + ret = mi_lttng_writer_close_element(writer); + if (ret) { + goto mi_error; + } + + ret_code = LTTNG_OK; + goto end; + +mi_error: + ret_code = LTTNG_ERR_MI_IO_FAIL; +end: + return ret_code; +}