diff options
author | Petri Savolainen <petri.savolainen@nokia.com> | 2019-06-06 10:32:23 +0300 |
---|---|---|
committer | Petri Savolainen <petri.savolainen@nokia.com> | 2019-06-12 12:31:32 +0300 |
commit | e4ef7a3b32d375e3e1872a43697d407413ae87aa (patch) | |
tree | 4653314ae35b95297c8175cd833f157894add4a5 /example/time/time_global_test.c | |
parent | 762e4c51fc0d61bee8e740370fa6c64f86a5ee6c (diff) |
example: time: fix deadlock with single worker
Random id calculation did get stuck when there's only single
worker (as id is always one).
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-by: Matias Elo <matias.elo@nokia.com>
Diffstat (limited to 'example/time/time_global_test.c')
-rw-r--r-- | example/time/time_global_test.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/example/time/time_global_test.c b/example/time/time_global_test.c index efcd22984..1e5cb0bd4 100644 --- a/example/time/time_global_test.c +++ b/example/time/time_global_test.c @@ -84,20 +84,23 @@ static void print_log(test_globals_t *gbls) printf("Number of errors: %u\n", err_num); } -static void -generate_next_queue(test_globals_t *gbls, odp_queue_t *queue, unsigned int id) +static void generate_next_queue(test_globals_t *gbls, odp_queue_t *queue, + unsigned int id) { int thr; - unsigned int rand_id; + uint8_t rand_u8; char queue_name[sizeof(QUEUE_NAME_PREFIX) + 2]; + unsigned int rand_id = 1; thr = odp_thread_id(); /* generate next random id */ - do { - odp_random_data((uint8_t *)&rand_id, sizeof(rand_id), 1); - rand_id = rand_id % gbls->thread_num + 1; - } while (rand_id == id); + if (gbls->thread_num > 1) { + do { + odp_random_data(&rand_u8, 1, ODP_RANDOM_BASIC); + rand_id = rand_u8 % gbls->thread_num + 1; + } while (rand_id == id); + } sprintf(queue_name, QUEUE_NAME_PREFIX "%d", rand_id); *queue = odp_queue_lookup(queue_name); |