From 7893f726b92c58d32505219ea5275d138c3ee3ff Mon Sep 17 00:00:00 2001 From: compudj Date: Thu, 12 Aug 2004 21:21:58 +0000 Subject: [PATCH] better hash functions in state.c and processlist.c git-svn-id: http://ltt.polymtl.ca/svn@718 04897980-b3bd-0310-b5e0-8ef037075253 --- ltt/branches/poly/lttv/lttv/state.c | 3 ++- .../poly/lttv/modules/gui/controlflow/drawing.c | 13 ++++++++++++- .../poly/lttv/modules/gui/controlflow/processlist.c | 11 ++++++----- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/ltt/branches/poly/lttv/lttv/state.c b/ltt/branches/poly/lttv/lttv/state.c index 20d4184a..2ff087f4 100644 --- a/ltt/branches/poly/lttv/lttv/state.c +++ b/ltt/branches/poly/lttv/lttv/state.c @@ -97,7 +97,8 @@ void lttv_state_state_saved_free(LttvTraceState *self, guint process_hash(gconstpointer key) { - return ((const LttvProcessState *)key)->pid; + guint pid = ((const LttvProcessState *)key)->pid; + return (pid>>8 ^ pid>>4 ^ pid>>2 ^ pid) ; } diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.c b/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.c index e877e6d9..64abc0bd 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.c +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.c @@ -54,7 +54,19 @@ GdkColor drawing_colors[NUM_COLORS] = { 0, 0xFFFF, 0xFFFF, 0xFFFF } /* COL_MODE_UNKNOWN : white */ }; +/* +RUN+USER MODE green +RUN+SYSCALL +RUN+TRAP +RUN+IRQ +WAIT+foncé +WAIT CPU + WAIT FORK vert foncé ou jaune +IRQ rouge +TRAP: orange +SYSCALL: bleu pâle +ZOMBIE + WAIT EXIT +*/ /***************************************************************************** @@ -261,7 +273,6 @@ void drawing_data_request(Drawing_t *drawing, /* Add these hooks to each event_by_id hooks list */ - /* add before */ for(k = 0 ; k < hooks->len/2 ; k++) { hook = g_array_index(hooks, LttvTraceHook, k); diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.c b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.c index 6e2ec2c7..924d8c52 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.c +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.c @@ -233,16 +233,17 @@ gint process_sort_func ( GtkTreeModel *model, } -static guint hash_fct(gconstpointer key) +static guint process_list_hash_fct(gconstpointer key) { - return ((ProcessInfo*)key)->pid ^ ((ProcessInfo*)key)->cpu; + guint pid = ((ProcessInfo*)key)->pid; + return ((pid>>8 ^ pid>>4 ^ pid>>2 ^ pid) ^ ((ProcessInfo*)key)->cpu); } -static gboolean equ_fct(gconstpointer a, gconstpointer b) +static gboolean process_list_equ_fct(gconstpointer a, gconstpointer b) { const ProcessInfo *pa = (const ProcessInfo*)a; const ProcessInfo *pb = (const ProcessInfo*)b; - + if(pa->pid != pb->pid) return 0; @@ -307,7 +308,7 @@ ProcessList *processlist_construct(void) GTK_SORT_ASCENDING); process_list->process_hash = g_hash_table_new_full( - hash_fct, equ_fct, + process_list_hash_fct, process_list_equ_fct, destroy_hash_key, destroy_hash_data ); -- 2.34.1