#include <lttv/hook.h>
#include <lttv/attribute.h>
#include <lttv/iattribute.h>
+#ifdef BABEL_CLEANUP
#include <lttv/stats.h>
#include <lttv/filter.h>
+#endif
#include <lttv/print.h>
-#include <ltt/ltt.h>
-#include <ltt/event.h>
-#include <ltt/trace.h>
#include <stdio.h>
#include <ctype.h>
-#include <ltt/ltt-private.h>
#include <babeltrace/ctf/events.h>
#include <string.h>
#include <inttypes.h>
#include <lttv/event.h>
-
+#include <lttv/traceset.h>
+#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;
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()) {
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;
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));
}
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);
}
}
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;
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) {
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);
}
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)