/* * Ask session daemon for all user space tracepoint fields available. */ static int list_ust_event_fields(void) { int i, size, ret = CMD_SUCCESS; struct lttng_domain domain; struct lttng_handle *handle; struct lttng_event_field *event_field_list; pid_t cur_pid = 0; char *cmdline = NULL; struct lttng_event cur_event; memset(&domain, 0, sizeof(domain)); memset(&cur_event, 0, sizeof(cur_event)); DBG("Getting UST tracing event fields"); domain.type = LTTNG_DOMAIN_UST; handle = lttng_create_handle(NULL, &domain); if (handle == NULL) { ret = CMD_ERROR; goto end; } size = lttng_list_tracepoint_fields(handle, &event_field_list); if (size < 0) { ERR("Unable to list UST event fields: %s", lttng_strerror(size)); ret = CMD_ERROR; goto end; } if (lttng_opt_mi) { /* Mi print */ ret = mi_list_ust_event_fields(event_field_list, size, &domain); if (ret) { ret = CMD_ERROR; goto error; } } else { /* Pretty print */ MSG("UST events:\n-------------"); if (size == 0) { MSG("None"); } for (i = 0; i < size; i++) { if (cur_pid != event_field_list[i].event.pid) { cur_pid = event_field_list[i].event.pid; cmdline = get_cmdline_by_pid(cur_pid); if (cmdline == NULL) { ret = CMD_ERROR; goto error; } MSG("\nPID: %d - Name: %s", cur_pid, cmdline); free(cmdline); /* Wipe current event since we are about to print a new PID. */ memset(&cur_event, 0, sizeof(cur_event)); } if (strcmp(cur_event.name, event_field_list[i].event.name) != 0) { print_events(&event_field_list[i].event); memcpy(&cur_event, &event_field_list[i].event, sizeof(cur_event)); } print_event_field(&event_field_list[i]); } MSG(""); } error: free(event_field_list); end: lttng_destroy_handle(handle); return ret; }
/* * Ask session daemon for all user space tracepoint fields available. */ static int list_ust_event_fields(void) { int i, size; struct lttng_domain domain; struct lttng_handle *handle; struct lttng_event_field *event_field_list; pid_t cur_pid = 0; char *cmdline = NULL; struct lttng_event cur_event; memset(&domain, 0, sizeof(domain)); memset(&cur_event, 0, sizeof(cur_event)); DBG("Getting UST tracing event fields"); domain.type = LTTNG_DOMAIN_UST; handle = lttng_create_handle(NULL, &domain); if (handle == NULL) { goto error; } size = lttng_list_tracepoint_fields(handle, &event_field_list); if (size < 0) { ERR("Unable to list UST event fields"); lttng_destroy_handle(handle); return size; } MSG("UST events:\n-------------"); if (size == 0) { MSG("None"); } for (i = 0; i < size; i++) { if (cur_pid != event_field_list[i].event.pid) { cur_pid = event_field_list[i].event.pid; cmdline = get_cmdline_by_pid(cur_pid); MSG("\nPID: %d - Name: %s", cur_pid, cmdline); free(cmdline); } if (strcmp(cur_event.name, event_field_list[i].event.name) != 0) { print_events(&event_field_list[i].event); memcpy(&cur_event, &event_field_list[i].event, sizeof(cur_event)); } print_event_field(&event_field_list[i]); } MSG(""); free(event_field_list); lttng_destroy_handle(handle); return CMD_SUCCESS; error: lttng_destroy_handle(handle); return -1; }