static void dbg_printf_pevent_info(struct event_format *event, struct pevent_record *rec) { static struct trace_seq s; event->pevent->print_raw = 1; trace_seq_init(&s); pevent_event_info(&s, event, rec); trace_seq_putc(&s, '\n'); trace_seq_terminate(&s); fprintf(stderr, "%.*s", s.len, s.buffer); trace_seq_destroy(&s); }
void event_format__print(struct event_format *event, int cpu, void *data, int size) { struct pevent_record record; struct trace_seq s; memset(&record, 0, sizeof(record)); record.cpu = cpu; record.size = size; record.data = data; trace_seq_init(&s); pevent_event_info(&s, event, &record); trace_seq_do_printf(&s); }
void print_trace_event(struct pevent *pevent, int cpu, void *data, int size) { struct event_format *event; struct pevent_record record; struct trace_seq s; int type; type = trace_parse_common_type(pevent, data); event = pevent_find_event(pevent, type); if (!event) { warning("ug! no event found for type %d", type); return; } memset(&record, 0, sizeof(record)); record.cpu = cpu; record.size = size; record.data = data; trace_seq_init(&s); pevent_event_info(&s, event, &record); trace_seq_do_printf(&s); }
void trace_view_store_get_value (GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue *value) { TraceViewRecord *record; TraceViewStore *trace_view_store; struct trace_seq s; struct pevent *pevent; struct event_format *event; struct record *data; const gchar *comm; gchar *str; guint64 secs, usecs; gint val; int cpu; g_return_if_fail (TRACE_VIEW_IS_LIST (tree_model)); g_return_if_fail (iter != NULL); g_return_if_fail (column < TRACE_VIEW_STORE(tree_model)->n_columns); g_value_init (value, TRACE_VIEW_STORE(tree_model)->column_types[column]); trace_view_store = TRACE_VIEW_STORE(tree_model); pevent = tracecmd_get_pevent(trace_view_store->handle); record = (TraceViewRecord*)iter->user_data; g_return_if_fail ( record != NULL ); column = get_visible_column(TRACE_VIEW_STORE(tree_model), column); switch(column) { case TRACE_VIEW_STORE_COL_INDEX: g_value_set_uint(value, record->pos); break; case TRACE_VIEW_STORE_COL_CPU: g_value_set_uint(value, record->cpu); break; case TRACE_VIEW_STORE_COL_TS: usecs = record->timestamp; usecs /= 1000; secs = usecs / 1000000ULL; usecs -= secs * 1000000ULL; str = g_strdup_printf("%llu.%06llu", (long long)secs, (long long)usecs); g_value_set_string(value, str); g_free(str); break; case TRACE_VIEW_STORE_COL_COMM: case TRACE_VIEW_STORE_COL_PID: case TRACE_VIEW_STORE_COL_LAT: case TRACE_VIEW_STORE_COL_EVENT: case TRACE_VIEW_STORE_COL_INFO: data = tracecmd_read_at(trace_view_store->handle, record->offset, &cpu); g_assert(data != NULL); if (cpu != record->cpu) { free_record(data); return; } switch (column) { case TRACE_VIEW_STORE_COL_COMM: case TRACE_VIEW_STORE_COL_PID: val = pevent_data_pid(pevent, data); if (column == TRACE_VIEW_STORE_COL_PID) g_value_set_uint(value, val); else { comm = pevent_data_comm_from_pid(pevent, val); g_value_set_string(value, comm); } break; case TRACE_VIEW_STORE_COL_LAT: trace_seq_init(&s); pevent_data_lat_fmt(pevent, &s, data); g_value_set_string(value, s.buffer); trace_seq_destroy(&s); break; case TRACE_VIEW_STORE_COL_EVENT: case TRACE_VIEW_STORE_COL_INFO: val = pevent_data_type(pevent, data); event = pevent_data_event_from_type(pevent, val); if (!event) { if (column == TRACE_VIEW_STORE_COL_EVENT) g_value_set_string(value, "[UNKNOWN EVENT]"); break; } if (column == TRACE_VIEW_STORE_COL_EVENT) { g_value_set_string(value, event->name); break; } trace_seq_init(&s); pevent_event_info(&s, event, data); g_value_set_string(value, s.buffer); trace_seq_destroy(&s); break; } free_record(data); } }