From: Brian Demsky Date: Thu, 7 Mar 2013 02:58:10 +0000 (-0800) Subject: deque: add test driver, add print messages for now for resize method and if we pull... X-Git-Tag: oopsla2013-final~27^2~4 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=model-checker-benchmarks.git;a=commitdiff_plain;h=b2f7bb95913baa71483d088402a32d5ca64b56f7 deque: add test driver, add print messages for now for resize method and if we pull the wrong values test case exposes model checker bugs :( --- diff --git a/Makefile b/Makefile index f97463a..326c00c 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -DIRS := barrier mcs-lock mpmc-queue spsc-queue spsc-bugfix linuxrwlocks dekker-fences +DIRS := barrier mcs-lock mpmc-queue spsc-queue spsc-bugfix linuxrwlocks dekker-fences chase-lev-deque .PHONY: $(DIRS) diff --git a/chase-lev-deque/Makefile b/chase-lev-deque/Makefile index 3f0fc86..91ff999 100644 --- a/chase-lev-deque/Makefile +++ b/chase-lev-deque/Makefile @@ -2,8 +2,8 @@ include ../benchmarks.mk TESTNAME = main -HEADERS = -OBJECTS = deque.o +HEADERS = deque.h +OBJECTS = main.o deque.o all: $(TESTNAME) diff --git a/chase-lev-deque/deque.c b/chase-lev-deque/deque.c index c6631ff..b74907f 100644 --- a/chase-lev-deque/deque.c +++ b/chase-lev-deque/deque.c @@ -50,6 +50,7 @@ void resize(Deque *q) { atomic_store_explicit(&new_a->buffer[i % new_size], atomic_load_explicit(&a->buffer[i % size], memory_order_relaxed), memory_order_relaxed); } atomic_store_explicit(&q->array, new_a, memory_order_relaxed); + printf("resize\n"); } void push(Deque *q, int x) { diff --git a/chase-lev-deque/main.c b/chase-lev-deque/main.c new file mode 100644 index 0000000..64d0444 --- /dev/null +++ b/chase-lev-deque/main.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include +#include + +#include "deque.h" + +Deque *q; +int a; +int b; + +static void task(void * param) { + a=steal(q); +} + +int user_main(int argc, char **argv) +{ + thrd_t t; + q=create(); + thrd_create(&t, task, 0); + push(q, 1); + push(q, 2); + b=take(q); + thrd_join(t); + if (a+b!=3) + printf("a=%d b=%d\n",a,b); + return 0; +}