diff options
author | Leandro Augusto Fogolin Pereira <leandro@zorg.(none)> | 2009-04-11 18:54:47 -0300 |
---|---|---|
committer | Leandro Augusto Fogolin Pereira <leandro@zorg.(none)> | 2009-04-11 18:54:47 -0300 |
commit | f456e935f74f23ae76de31d5fb84906090c8e1aa (patch) | |
tree | 5a2f8764152a5e17b95cdfabaf022a350f435fd0 /hardinfo2/benchmark.c | |
parent | 07ba0e3bf71c3c5ad7d98be58160e13069d9cf77 (diff) |
Fit crash with FFT benchmark.
Diffstat (limited to 'hardinfo2/benchmark.c')
-rw-r--r-- | hardinfo2/benchmark.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/hardinfo2/benchmark.c b/hardinfo2/benchmark.c index e31d6b34..d91394bf 100644 --- a/hardinfo2/benchmark.c +++ b/hardinfo2/benchmark.c @@ -62,6 +62,7 @@ static ModuleEntry entries[] = { typedef struct _ParallelBenchTask ParallelBenchTask; struct _ParallelBenchTask { + gint thread_number; guint start, end; gpointer data, callback; }; @@ -69,13 +70,13 @@ struct _ParallelBenchTask { gpointer benchmark_parallel_for_dispatcher(gpointer data) { ParallelBenchTask *pbt = (ParallelBenchTask *)data; - gpointer (*callback)(unsigned int start, unsigned int end, void *data); + gpointer (*callback)(unsigned int start, unsigned int end, void *data, gint thread_number); gpointer return_value; if ((callback = pbt->callback)) { DEBUG("this is thread %p; items %d -> %d, data %p", g_thread_self(), pbt->start, pbt->end, pbt->data); - return_value = callback(pbt->start, pbt->end, pbt->data); + return_value = callback(pbt->start, pbt->end, pbt->data, pbt->thread_number); DEBUG("this is thread %p; return value is %p", g_thread_self(), return_value); } else { DEBUG("this is thread %p; callback is NULL and it should't be!", g_thread_self()); @@ -89,7 +90,7 @@ gpointer benchmark_parallel_for_dispatcher(gpointer data) gdouble benchmark_parallel_for(guint start, guint end, gpointer callback, gpointer callback_data) { gchar *temp; - guint n_cores, iter_per_core, iter; + guint n_cores, iter_per_core, iter, thread_number = 0; gdouble elapsed_time; GSList *threads = NULL, *t; GTimer *timer; @@ -121,7 +122,8 @@ gdouble benchmark_parallel_for(guint start, guint end, DEBUG("launching thread %d", 1 + (iter / iter_per_core)); - pbt->start = iter == 0 ? 0 : iter + 1; + pbt->thread_number = thread_number++; + pbt->start = iter == 0 ? 0 : iter; pbt->end = iter + iter_per_core - 1; pbt->data = callback_data; pbt->callback = callback; |