X-Git-Url: http://plrg.eecs.uci.edu/git/?p=model-checker-benchmarks.git;a=blobdiff_plain;f=ms-queue%2Fmain.c;h=b541b010c2837d04e798b6db73a2eb4d3dbc4f31;hp=015fbd4c7737175294b9952b697558dca7bf66af;hb=7a025e2754eecddbcde0123071ac842f153ee098;hpb=7df8191c93d3664a3b1ea2dfcd0e88de2cfcc7c9 diff --git a/ms-queue/main.c b/ms-queue/main.c index 015fbd4..b541b01 100644 --- a/ms-queue/main.c +++ b/ms-queue/main.c @@ -1,80 +1,80 @@ -#include "main.h" #include +#include +#include -#define NUM_PROCESSORS 12 +#include "my_queue.h" +#include "model-assert.h" -struct tms tim; -struct tms tim1; +static int procs = 2; +static queue_t *queue; +static thrd_t *threads; +static unsigned int *input; +static unsigned int *output; +static int num_threads; -int shmid; - -unsigned pid; -char* name = ""; -unsigned procs = 1; -unsigned multi = 1; -unsigned iterations = 1; -unsigned initial_nodes = 0; -unsigned repetitions = 1; -unsigned work = 0; -private_t private; -shared_mem_t *smp; - -void time_test() +int get_thread_num() { - unsigned i,j; - struct tms time_val; - clock_t t1, t2; - unsigned val; - - if(pid==0) { - init_queue(); - } - init_memory(); - init_private(); - for(i=0;i>1))/(procs*multi); + queue = calloc(1, sizeof(*queue)); + MODEL_ASSERT(queue); - smp = (shared_mem_t *)calloc(1, sizeof(shared_mem_t)); - assert(smp); + num_threads = procs; + threads = malloc(num_threads * sizeof(thrd_t)); + param = malloc(num_threads * sizeof(*param)); + input = calloc(num_threads, sizeof(*input)); + output = calloc(num_threads, sizeof(*output)); - num_threads = procs * multi; - t = malloc(num_threads * sizeof(thrd_t)); + init_queue(queue, num_threads); + for (i = 0; i < num_threads; i++) { + param[i] = i; + thrd_create(&threads[i], main_task, ¶m[i]); + } + for (i = 0; i < num_threads; i++) + thrd_join(threads[i]); + for (i = 0; i < num_threads; i++) { + in_sum += input[i]; + out_sum += output[i]; + } for (i = 0; i < num_threads; i++) - thrd_create(&t[i], main_task, NULL); + printf("input[%d] = %u\n", i, input[i]); for (i = 0; i < num_threads; i++) - thrd_join(t[i]); + printf("output[%d] = %u\n", i, output[i]); + MODEL_ASSERT(in_sum == out_sum); - free(t); - free(smp); + free(param); + free(threads); + free(queue); return 0; }