X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Flist_triggers.c;h=b497d4f4d82bcafeeb25d68395ecbb5b8778fc82;hb=702f26c8641ee4554c629d13b9367b1e93f96e31;hp=3b806e7ea2bd98b15ae78595c84849c4794f321d;hpb=1d4b59f247e2692bf1e9c3c0aac93a47389d20dd;p=lttng-tools.git diff --git a/src/bin/lttng/commands/list_triggers.c b/src/bin/lttng/commands/list_triggers.c index 3b806e7ea..b497d4f4d 100644 --- a/src/bin/lttng/commands/list_triggers.c +++ b/src/bin/lttng/commands/list_triggers.c @@ -14,10 +14,12 @@ #include "common/mi-lttng.h" /* For lttng_condition_type_str(). */ #include "lttng/condition/condition-internal.h" -#include "lttng/condition/on-event.h" -#include "lttng/condition/on-event-internal.h" +#include "lttng/condition/event-rule-matches.h" +#include "lttng/condition/event-rule-matches-internal.h" /* For lttng_domain_type_str(). */ #include "lttng/domain-internal.h" +/* For lttng_event_rule_syscall_emission_site_str() */ +#include "lttng/event-rule/syscall-internal.h" #include "../loglevel.h" #include @@ -39,6 +41,81 @@ struct argpar_opt_descr list_trigger_options[] = { ARGPAR_OPT_DESCR_SENTINEL, }; +static void print_condition_session_consumed_size( + const struct lttng_condition *condition) +{ + enum lttng_condition_status condition_status; + const char *session_name; + uint64_t threshold; + + condition_status = + lttng_condition_session_consumed_size_get_session_name( + condition, &session_name); + assert(condition_status == LTTNG_CONDITION_STATUS_OK); + + lttng_condition_session_consumed_size_get_threshold( + condition, &threshold); + assert(condition_status == LTTNG_CONDITION_STATUS_OK); + + MSG(" session name: %s", session_name); + MSG(" threshold: %" PRIu64 " bytes", threshold); +} + +static void print_condition_buffer_usage( + const struct lttng_condition *condition) +{ + enum lttng_condition_status condition_status; + const char *session_name, *channel_name; + enum lttng_domain_type domain_type; + uint64_t threshold; + + condition_status = lttng_condition_buffer_usage_get_session_name( + condition, &session_name); + assert(condition_status == LTTNG_CONDITION_STATUS_OK); + + condition_status = lttng_condition_buffer_usage_get_channel_name( + condition, &channel_name); + assert(condition_status == LTTNG_CONDITION_STATUS_OK); + + condition_status = lttng_condition_buffer_usage_get_domain_type( + condition, &domain_type); + assert(condition_status == LTTNG_CONDITION_STATUS_OK); + + MSG(" session name: %s", session_name); + MSG(" channel name: %s", channel_name); + MSG(" domain: %s", lttng_domain_type_str(domain_type)); + + condition_status = lttng_condition_buffer_usage_get_threshold( + condition, &threshold); + if (condition_status == LTTNG_CONDITION_STATUS_OK) { + MSG(" threshold (bytes): %" PRIu64, threshold); + } else { + double threshold_ratio; + + assert(condition_status == LTTNG_CONDITION_STATUS_UNSET); + + condition_status = + lttng_condition_buffer_usage_get_threshold_ratio( + condition, &threshold_ratio); + assert(condition_status == LTTNG_CONDITION_STATUS_OK); + + MSG(" threshold (ratio): %.2f", threshold_ratio); + } +} + +static void print_condition_session_rotation( + const struct lttng_condition *condition) +{ + enum lttng_condition_status condition_status; + const char *session_name; + + condition_status = lttng_condition_session_rotation_get_session_name( + condition, &session_name); + assert(condition_status == LTTNG_CONDITION_STATUS_OK); + + MSG(" session name: %s", session_name); +} + /* * Returns the human-readable log level name associated with a numerical value * if there is one. The Log4j and JUL domains have discontinuous log level @@ -312,14 +389,20 @@ void print_event_rule_syscall(const struct lttng_event_rule *event_rule) { const char *pattern, *filter; enum lttng_event_rule_status event_rule_status; + enum lttng_event_rule_syscall_emission_site_type emission_site_type; assert(lttng_event_rule_get_type(event_rule) == LTTNG_EVENT_RULE_TYPE_SYSCALL); + emission_site_type = + lttng_event_rule_syscall_get_emission_site_type(event_rule); + event_rule_status = lttng_event_rule_syscall_get_pattern( event_rule, &pattern); assert(event_rule_status == LTTNG_EVENT_RULE_STATUS_OK); - _MSG(" rule: %s (type: syscall", pattern); + _MSG(" rule: %s (type: syscall:%s", pattern, + lttng_event_rule_syscall_emission_site_str( + emission_site_type)); event_rule_status = lttng_event_rule_syscall_get_filter( event_rule, &filter); @@ -423,21 +506,21 @@ void print_one_event_expr(const struct lttng_event_expr *event_expr) } } -static -void print_condition_on_event(const struct lttng_condition *condition) +static void print_condition_event_rule_matches( + const struct lttng_condition *condition) { const struct lttng_event_rule *event_rule; enum lttng_condition_status condition_status; unsigned int cap_desc_count, i; - condition_status = - lttng_condition_on_event_get_rule(condition, &event_rule); + condition_status = lttng_condition_event_rule_matches_get_rule( + condition, &event_rule); assert(condition_status == LTTNG_CONDITION_STATUS_OK); print_event_rule(event_rule); condition_status = - lttng_condition_on_event_get_capture_descriptor_count( + lttng_condition_event_rule_matches_get_capture_descriptor_count( condition, &cap_desc_count); assert(condition_status == LTTNG_CONDITION_STATUS_OK); @@ -446,7 +529,7 @@ void print_condition_on_event(const struct lttng_condition *condition) for (i = 0; i < cap_desc_count; i++) { const struct lttng_event_expr *cap_desc = - lttng_condition_on_event_get_capture_descriptor_at_index( + lttng_condition_event_rule_matches_get_capture_descriptor_at_index( condition, i); _MSG(" - "); @@ -817,18 +900,28 @@ void print_one_trigger(const struct lttng_trigger *trigger) assert(trigger_status == LTTNG_TRIGGER_STATUS_OK); MSG("- name: %s", name); - MSG(" user id: %d", trigger_uid); + MSG(" owner uid: %d", trigger_uid); condition = lttng_trigger_get_const_condition(trigger); condition_type = lttng_condition_get_type(condition); MSG(" condition: %s", lttng_condition_type_str(condition_type)); switch (condition_type) { - case LTTNG_CONDITION_TYPE_ON_EVENT: - print_condition_on_event(condition); + case LTTNG_CONDITION_TYPE_SESSION_CONSUMED_SIZE: + print_condition_session_consumed_size(condition); break; - default: - MSG(" (condition type not handled in %s)", __func__); + case LTTNG_CONDITION_TYPE_BUFFER_USAGE_HIGH: + case LTTNG_CONDITION_TYPE_BUFFER_USAGE_LOW: + print_condition_buffer_usage(condition); + break; + case LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING: + case LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED: + print_condition_session_rotation(condition); + break; + case LTTNG_CONDITION_TYPE_EVENT_RULE_MATCHES: + print_condition_event_rule_matches(condition); break; + default: + abort(); } action = lttng_trigger_get_const_action(trigger); @@ -839,12 +932,12 @@ void print_one_trigger(const struct lttng_trigger *trigger) MSG(" actions:"); - action_status = lttng_action_group_get_count(action, &count); + action_status = lttng_action_list_get_count(action, &count); assert(action_status == LTTNG_ACTION_STATUS_OK); for (i = 0; i < count; i++) { const struct lttng_action *subaction = - lttng_action_group_get_at_index( + lttng_action_list_get_at_index( action, i); _MSG(" ");