summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/processors.c54
-rw-r--r--src/core/processors.h13
2 files changed, 66 insertions, 1 deletions
diff --git a/src/core/processors.c b/src/core/processors.c
index 9c67a87..2b1e0ca 100644
--- a/src/core/processors.c
+++ b/src/core/processors.c
@@ -45,6 +45,9 @@ typedef struct _proc_t
GType instance; /* Type à manipuler en interne */
init_arch_fc init; /* Phase d'intialisation */
+#ifdef DEBUG_DUMP_STATS
+ dump_arch_stats_fc dump; /* Affichage de statistiques */
+#endif
exit_arch_fc exit; /* Phase de relâchement */
} proc_t;
@@ -69,6 +72,7 @@ static proc_t *find_processor_by_key(const char *);
* name = désignation humaine de l'architecture. *
* instance = type GLib représentant le type à instancier. *
* init = procédure d'initialisation de mécanismes internes.*
+* dump = procédure d'affichage de statistiques. *
* exit = procédure de suppression de mécanismes internes. *
* *
* Description : Enregistre un processeur pour une architecture donnée. *
@@ -78,8 +82,11 @@ static proc_t *find_processor_by_key(const char *);
* Remarques : - *
* *
******************************************************************************/
-
+#ifdef DEBUG_DUMP_STATS
+bool register_processor_type(const char *key, const char *name, GType instance, init_arch_fc init, dump_arch_stats_fc dump, exit_arch_fc exit)
+#else
bool register_processor_type(const char *key, const char *name, GType instance, init_arch_fc init, exit_arch_fc exit)
+#endif
{
bool result; /* Bilan à retourner */
proc_t *new; /* Nouvel élément à définir */
@@ -104,6 +111,9 @@ bool register_processor_type(const char *key, const char *name, GType instance,
new->instance = instance;
new->init = init;
+#ifdef DEBUG_DUMP_STATS
+ new->dump = dump;
+#endif
new->exit = exit;
}
@@ -134,10 +144,18 @@ bool load_hard_coded_processors_definitions(void)
result = true;
result &= register_processor_type("armv7", "ARM v7", G_TYPE_ARMV7_PROCESSOR,
+#ifdef DEBUG_DUMP_STATS
+ init_armv7_core, NULL, exit_armv7_core);
+#else
init_armv7_core, exit_armv7_core);
+#endif
result &= register_processor_type("dalvik", "Dalvik Virtual Machine", G_TYPE_DALVIK_PROCESSOR,
+#ifdef DEBUG_DUMP_STATS
+ init_dalvik_core, dump_dalvik_share_stats, exit_dalvik_core);
+#else
init_dalvik_core, exit_dalvik_core);
+#endif
//result &= register_processor_type("jvm", "Java Virtual Machine", G_TYPE_JVM_PROCESSOR);
@@ -278,3 +296,37 @@ GArchProcessor *get_arch_processor_for_type(const char *key)
return result;
}
+
+
+/******************************************************************************
+* *
+* Paramètres : proc = processeur associé à l'architecture à traiter. *
+* *
+* Description : Imprime des statistiques quant aux partages. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+#ifdef DEBUG_DUMP_STATS
+void display_share_stats(GArchProcessor *proc)
+{
+ GType type; /* Type de processeur */
+ size_t i; /* Boucle de parcours */
+
+ type = G_OBJECT_TYPE(proc);
+
+ G_LOCK(_pdef_access);
+
+ for (i = 0; i < _processors_definitions_count; i++)
+ if (_processors_definitions[i].instance == type)
+ {
+ _processors_definitions[i].dump();
+ break;
+ }
+
+ G_UNLOCK(_pdef_access);
+
+}
+#endif
diff --git a/src/core/processors.h b/src/core/processors.h
index 4f82dc3..6104c97 100644
--- a/src/core/processors.h
+++ b/src/core/processors.h
@@ -36,12 +36,21 @@
/* Mise en place de mécanismes internes */
typedef bool (* init_arch_fc) (void);
+/* Affichage de statistiques */
+#ifdef DEBUG_DUMP_STATS
+typedef void (* dump_arch_stats_fc) (void);
+#endif
+
/* Suppression de mécanismes internes */
typedef void (* exit_arch_fc) (void);
/* Enregistre un processeur pour une architecture donnée. */
+#ifdef DEBUG_DUMP_STATS
+bool register_processor_type(const char *, const char *, GType, init_arch_fc, dump_arch_stats_fc, exit_arch_fc);
+#else
bool register_processor_type(const char *, const char *, GType, init_arch_fc, exit_arch_fc);
+#endif
/* Charge les définitions de processeurs "natifs". */
bool load_hard_coded_processors_definitions(void);
@@ -55,6 +64,10 @@ const char *get_arch_processor_name(const char *);
/* Fournit le processeur d'architecture correspondant à un type. */
GArchProcessor *get_arch_processor_for_type(const char *);
+/* Imprime des statistiques quant aux partages. */
+#ifdef DEBUG_DUMP_STATS
+void display_share_stats(GArchProcessor *);
+#endif
#endif /* _ANALYSIS_DB_COLLECTION_H */