From 7dbb2b8c3f5bb666de37f27def040e60b3bfb94d Mon Sep 17 00:00:00 2001
From: Cedric Roux <cedric.roux@eurecom.fr>
Date: Wed, 27 Apr 2016 14:10:47 +0200
Subject: [PATCH] id management / bug fixes in database

---
 common/utils/T/tracer/database.c | 18 +++++++++++++++---
 common/utils/T/tracer/database.h |  1 +
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/common/utils/T/tracer/database.c b/common/utils/T/tracer/database.c
index 5e7c9ec8f6..a5d41fb325 100644
--- a/common/utils/T/tracer/database.c
+++ b/common/utils/T/tracer/database.c
@@ -27,6 +27,7 @@ typedef struct {
   int isize;
   group *g;
   int gsize;
+  int *pos;
 } database;
 
 typedef struct {
@@ -324,6 +325,11 @@ void *parse_database(char *filename)
   free(p.name.data);
   free(p.value.data);
 
+  /* setup pos */
+  r->pos = malloc(sizeof(int) * r->isize); if (r->pos == NULL) abort();
+  for (i = 0; i < r->isize; i++)
+    r->pos[r->i[i].id] = i;
+
   return r;
 }
 
@@ -410,6 +416,12 @@ void on_off(void *_d, char *item, int *a, int onoff)
   }
 }
 
+char *event_name_from_id(void *_database, int id)
+{
+  database *d = _database;
+  return d->i[d->pos[id]].name;
+}
+
 database_event_format get_format(void *_database, int event_id)
 {
   database *d = _database;
@@ -420,9 +432,9 @@ database_event_format get_format(void *_database, int event_id)
     abort();
   }
 
-  ret.type = d->i[event_id].arg_type;
-  ret.name = d->i[event_id].arg_name;
-  ret.count = d->i[event_id].asize;
+  ret.type = d->i[d->pos[event_id]].arg_type;
+  ret.name = d->i[d->pos[event_id]].arg_name;
+  ret.count = d->i[d->pos[event_id]].asize;
 
   return ret;
 }
diff --git a/common/utils/T/tracer/database.h b/common/utils/T/tracer/database.h
index 544f0ad06f..b21f323932 100644
--- a/common/utils/T/tracer/database.h
+++ b/common/utils/T/tracer/database.h
@@ -7,6 +7,7 @@ void dump_database(void *database);
 void list_ids(void *database);
 void list_groups(void *database);
 void on_off(void *d, char *item, int *a, int onoff);
+char *event_name_from_id(void *database, int id);
 
 /****************************************************************************/
 /* get format of an event                                                   */
-- 
GitLab