X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttv%2Flttv%2Fprint.c;h=e8df4ed9f12d5853a44e1a1712db231f186d7d4c;hb=190724cdfc53eeebfd895b594f875b53a72adf37;hp=e87cb3e150e6ddc32a8d77ea786af9765e8c906c;hpb=556b540ae4beba8dd3dd0d628e149c6b93eb4c29;p=lttv.git diff --git a/lttv/lttv/print.c b/lttv/lttv/print.c index e87cb3e1..e8df4ed9 100644 --- a/lttv/lttv/print.c +++ b/lttv/lttv/print.c @@ -32,25 +32,22 @@ #include #include #include +#ifdef BABEL_CLEANUP #include #include +#endif #include -#include -#include -#include #include #include -#include #include #include #include #include - +#include +#ifdef BABEL_CLEANUP static inline void print_enum_events(LttEvent *e, struct marker_field *f, guint64 value, GString *s, LttvTracefileState *tfs) { - LttTracefile *tf = tfs->parent.tf; - struct marker_info *info = marker_get_info_from_id(tf->mdata, e->event_id); LttvTraceState *ts = (LttvTraceState*)(tfs->parent.t_context); LttvNameTables *nt = ts->name_tables; @@ -259,22 +256,37 @@ void lttv_print_field(LttEvent *e, struct marker_field *f, GString *s, break; } } - -int getProcessInfosFromEvent(struct bt_ctf_event *ctf_event, GString* processInfos) +#endif +int getProcessInfosFromEvent(LttvEvent *event, GString* processInfos) { - int pid, tid, ppid; - char *procname; - struct definition *scope; + int pid=0, tid=0, ppid=0; + const char *procname; + unsigned long timestamp; int ret = 0; gboolean noError = TRUE; + guint cpu; + LttvTraceState *state = event->state; + LttvProcessState *process; + struct bt_ctf_event *ctf_event = event->bt_event; + + cpu = lttv_traceset_get_cpuid_from_event(event); + + process = state->running_process[cpu]; + timestamp = bt_ctf_get_timestamp(ctf_event); + + pid = process->pid; + tid = process->tgid; + ppid = process->ppid; + procname = g_quark_to_string(process->name); if (timestamp == -1ULL) { noError = FALSE; } +#if 0 if (noError) { scope = bt_ctf_get_top_level_scope(ctf_event, BT_STREAM_EVENT_CONTEXT); if (bt_ctf_field_get_error()) { @@ -305,9 +317,9 @@ int getProcessInfosFromEvent(struct bt_ctf_event *ctf_event, GString* processInf noError = FALSE; } } - - if (noError) { - g_string_append_printf(processInfos, "%u, %u, %s, %u", pid, tid, procname, ppid); +#endif + if (noError||1) { + g_string_append_printf(processInfos, "%u, %u, %s, %u. %s, %s", pid, tid, procname, ppid, g_quark_to_string(process->state->t), g_quark_to_string(process->state->s)); } else { ret = -1; @@ -316,51 +328,27 @@ int getProcessInfosFromEvent(struct bt_ctf_event *ctf_event, GString* processInf return ret; } - -int getCPUIdFromEvent(struct bt_ctf_event *ctf_event, GString* cpuId_str) +static +int getCPUIdFromEvent(LttvEvent *event, GString* cpuId_str) { - struct definition *scope; - unsigned long timestamp; - unsigned int cpu_id; - int ret = 0; + gint cpuid; - gboolean noError = TRUE; - - timestamp = bt_ctf_get_timestamp(ctf_event); - if (timestamp == -1ULL) { - noError = FALSE; + cpuid = lttv_traceset_get_cpuid_from_event(event); + if (cpuid < 0) { + return -1; } - if (noError) { - scope = bt_ctf_get_top_level_scope(ctf_event, BT_STREAM_PACKET_CONTEXT); - if (bt_ctf_field_get_error()) { - noError = FALSE; - } - } - if (noError) { - cpu_id = bt_ctf_get_uint64(bt_ctf_get_field(ctf_event, scope, "cpu_id")); - if (bt_ctf_field_get_error()) { - noError = FALSE; - } - else { - g_string_append_printf(cpuId_str, "%u", cpu_id); - } - } - - if (!noError) { - ret = -1; - } - - return ret; + g_string_append_printf(cpuId_str, "%u", cpuid); + return 0; } -int getFields(struct bt_ctf_event *ctf_event, struct definition const *fields, GString* fieldsStr) +int getFields(struct bt_ctf_event *ctf_event, struct bt_definition const *fields, GString* fieldsStr) { - enum ctf_type_id fieldType = bt_ctf_field_type(fields); + enum ctf_type_id fieldType = bt_ctf_field_type(bt_ctf_get_decl_from_def(fields)); int ret = 0, isSigned = -1, len = 0, i = 0; - struct definition *index_def; + const struct bt_definition *index_def; switch (fieldType) { case CTF_TYPE_INTEGER: - isSigned = bt_ctf_get_int_signedness(fields); + isSigned = bt_ctf_get_int_signedness(bt_ctf_get_decl_from_def(fields)); if (isSigned == 1) { g_string_append_printf(fieldsStr, "%lu", bt_ctf_get_int64(fields)); } @@ -374,15 +362,15 @@ int getFields(struct bt_ctf_event *ctf_event, struct definition const *fields, G case CTF_TYPE_ARRAY: g_string_append_printf(fieldsStr, "[ "); - len = bt_ctf_get_array_len(fields); - if (index_def = bt_ctf_get_index(ctf_event, fields, i)) { + len = bt_ctf_get_array_len(bt_ctf_get_decl_from_def(fields)); + if ((index_def = bt_ctf_get_index(ctf_event, fields, i))) { for (i = 0; i < len; i++) { if (i > 0) { g_string_append_printf(fieldsStr, ", "); } - bt_ctf_field_type(bt_ctf_get_index(ctf_event, fields, i)); + //bt_ctf_field_type( bt_ctf_get_index(ctf_event, fields, i)); g_string_append_printf(fieldsStr, " "); - g_string_append_printf(fieldsStr, "[%d] = "); + g_string_append_printf(fieldsStr, "[%d] = ",i); getFields(ctf_event, bt_ctf_get_index(ctf_event, fields, i), fieldsStr); } } @@ -393,7 +381,9 @@ int getFields(struct bt_ctf_event *ctf_event, struct definition const *fields, G break; case CTF_TYPE_UNKNOWN: + g_string_append_printf(fieldsStr, "TYPE UNKNOWN"); default: + g_string_append_printf(fieldsStr, "TYPE UNIMP %i",fieldType ); break; } return ret; @@ -401,11 +391,11 @@ int getFields(struct bt_ctf_event *ctf_event, struct definition const *fields, G int getFieldsFromEvent(struct bt_ctf_event *ctf_event, GString* fields, gboolean field_names) { - struct definition const * const *list = NULL; + struct bt_definition const * const *list = NULL; unsigned int count; - int i = 0, j = 0, ret = 0; + int i = 0, ret = 0; gboolean noError = TRUE; - struct definition *scope; + const struct bt_definition *scope; scope = bt_ctf_get_top_level_scope(ctf_event, BT_EVENT_FIELDS); if (!scope) { @@ -438,19 +428,25 @@ int getFieldsFromEvent(struct bt_ctf_event *ctf_event, GString* fields, gboolean return ret; } -void lttv_event_to_string(LttvEvent *event, GString *a_string, gboolean field_names) +void lttv_event_to_string(LttvEvent *event, GString *a_string, + gboolean field_names, gboolean long_version) { GString* processInfos = g_string_new(""); GString* fields = g_string_new(""); GString* cpuId_str = g_string_new(""); - getProcessInfosFromEvent(event->bt_event, processInfos); + getProcessInfosFromEvent(event, processInfos); getFieldsFromEvent(event->bt_event, fields, field_names); - getCPUIdFromEvent(event->bt_event, cpuId_str); + getCPUIdFromEvent(event, cpuId_str); g_string_set_size(a_string,0); - - g_string_append_printf(a_string, "%llu %s: { %s }", bt_ctf_get_timestamp(event->bt_event), bt_ctf_event_name(event->bt_event), cpuId_str->str); + if(long_version){ + g_string_append_printf(a_string, "%llu %s: ", + bt_ctf_get_timestamp(event->bt_event), + bt_ctf_event_name(event->bt_event)); + } + g_string_append_printf(a_string, "{ %s }", cpuId_str->str); + if (strcmp("", processInfos->str) < 0) { g_string_append_printf(a_string, ", { %s }", processInfos->str); } @@ -462,7 +458,11 @@ void lttv_event_to_string(LttvEvent *event, GString *a_string, gboolean field_na g_string_free(processInfos, TRUE); g_string_free(cpuId_str, TRUE); } - +void lttv_event_get_name(LttvEvent *event,GString *a_string) +{ + g_string_set_size(a_string,0); + g_string_append_printf(a_string, " %s", bt_ctf_event_name(event->bt_event)); +} #ifdef BABEL_CLEANUP void lttv_event_to_string(LttEvent *e, GString *s, gboolean mandatory_fields, gboolean field_names, LttvTracefileState *tfs)