/* * Pretty print single event. */ static void print_events(struct lttng_event *event) { switch (event->type) { case LTTNG_EVENT_TRACEPOINT: { if (event->loglevel != -1) { MSG("%s%s (loglevel%s %s (%d)) (type: tracepoint)%s%s%s", indent6, event->name, logleveltype_string(event->loglevel_type), mi_lttng_loglevel_string(event->loglevel, handle->domain.type), event->loglevel, enabled_string(event->enabled), exclusion_string(event->exclusion), filter_string(event->filter)); } else { MSG("%s%s (type: tracepoint)%s%s%s", indent6, event->name, enabled_string(event->enabled), exclusion_string(event->exclusion), filter_string(event->filter)); } break; } case LTTNG_EVENT_FUNCTION: MSG("%s%s (type: function)%s%s", indent6, event->name, enabled_string(event->enabled), filter_string(event->filter)); if (event->attr.probe.addr != 0) { MSG("%saddr: 0x%" PRIx64, indent8, event->attr.probe.addr); } else { MSG("%soffset: 0x%" PRIx64, indent8, event->attr.probe.offset); MSG("%ssymbol: %s", indent8, event->attr.probe.symbol_name); } break; case LTTNG_EVENT_PROBE: MSG("%s%s (type: probe)%s%s", indent6, event->name, enabled_string(event->enabled), filter_string(event->filter)); if (event->attr.probe.addr != 0) { MSG("%saddr: 0x%" PRIx64, indent8, event->attr.probe.addr); } else { MSG("%soffset: 0x%" PRIx64, indent8, event->attr.probe.offset); MSG("%ssymbol: %s", indent8, event->attr.probe.symbol_name); } break; case LTTNG_EVENT_FUNCTION_ENTRY: MSG("%s%s (type: function)%s%s", indent6, event->name, enabled_string(event->enabled), filter_string(event->filter)); MSG("%ssymbol: \"%s\"", indent8, event->attr.ftrace.symbol_name); break; case LTTNG_EVENT_SYSCALL: MSG("%s%s%s%s%s", indent6, event->name, (opt_syscall ? "" : " (type:syscall)"), enabled_string(event->enabled), bitness_event(event->flags)); break; case LTTNG_EVENT_NOOP: MSG("%s (type: noop)%s%s", indent6, enabled_string(event->enabled), filter_string(event->filter)); break; case LTTNG_EVENT_ALL: /* We should never have "all" events in list. */ assert(0); break; } }
/* * Pretty print single event. */ static void print_events(struct lttng_event *event) { int ret; const char *filter_str; char *filter_msg = NULL; char *exclusion_msg = NULL; ret = lttng_event_get_filter_expression(event, &filter_str); if (ret) { filter_msg = strdup(" [failed to retrieve filter]"); } else if (filter_str) { const char * const filter_fmt = " [filter: '%s']"; filter_msg = malloc(strlen(filter_str) + strlen(filter_fmt) + 1); if (filter_msg) { sprintf(filter_msg, filter_fmt, filter_str); } } exclusion_msg = get_exclusion_names_msg(event); if (!exclusion_msg) { exclusion_msg = strdup(" [failed to retrieve exclusions]"); } switch (event->type) { case LTTNG_EVENT_TRACEPOINT: { if (event->loglevel != -1) { MSG("%s%s (loglevel%s %s (%d)) (type: tracepoint)%s%s%s", indent6, event->name, logleveltype_string(event->loglevel_type), mi_lttng_loglevel_string(event->loglevel, handle->domain.type), event->loglevel, enabled_string(event->enabled), safe_string(exclusion_msg), safe_string(filter_msg)); } else { MSG("%s%s (type: tracepoint)%s%s%s", indent6, event->name, enabled_string(event->enabled), safe_string(exclusion_msg), safe_string(filter_msg)); } break; } case LTTNG_EVENT_FUNCTION: MSG("%s%s (type: function)%s%s", indent6, event->name, enabled_string(event->enabled), safe_string(filter_msg)); if (event->attr.probe.addr != 0) { MSG("%saddr: 0x%" PRIx64, indent8, event->attr.probe.addr); } else { MSG("%soffset: 0x%" PRIx64, indent8, event->attr.probe.offset); MSG("%ssymbol: %s", indent8, event->attr.probe.symbol_name); } break; case LTTNG_EVENT_PROBE: MSG("%s%s (type: probe)%s%s", indent6, event->name, enabled_string(event->enabled), safe_string(filter_msg)); if (event->attr.probe.addr != 0) { MSG("%saddr: 0x%" PRIx64, indent8, event->attr.probe.addr); } else { MSG("%soffset: 0x%" PRIx64, indent8, event->attr.probe.offset); MSG("%ssymbol: %s", indent8, event->attr.probe.symbol_name); } break; case LTTNG_EVENT_FUNCTION_ENTRY: MSG("%s%s (type: function)%s%s", indent6, event->name, enabled_string(event->enabled), safe_string(filter_msg)); MSG("%ssymbol: \"%s\"", indent8, event->attr.ftrace.symbol_name); break; case LTTNG_EVENT_SYSCALL: MSG("%s%s%s%s%s%s", indent6, event->name, (opt_syscall ? "" : " (type:syscall)"), enabled_string(event->enabled), bitness_event(event->flags), safe_string(filter_msg)); break; case LTTNG_EVENT_NOOP: MSG("%s (type: noop)%s%s", indent6, enabled_string(event->enabled), safe_string(filter_msg)); break; case LTTNG_EVENT_ALL: /* We should never have "all" events in list. */ assert(0); break; } free(filter_msg); free(exclusion_msg); }