Use the version of ms-queue modified by tsan11
authorweiyu <weiyuluo1232@gmail.com>
Sun, 13 Dec 2020 00:00:19 +0000 (16:00 -0800)
committerweiyu <weiyuluo1232@gmail.com>
Sun, 13 Dec 2020 00:00:19 +0000 (16:00 -0800)
cdschecker_modified_benchmarks/ms-queue/Makefile
cdschecker_modified_benchmarks/ms-queue/main.cc
cdschecker_modified_benchmarks/ms-queue/my_queue.cc

index f2a14efb7d4efde60c8084dc21c21ac15956ec4e..151ad712ff803fa5989ab6bbf6f738c322c83bc9 100644 (file)
@@ -5,15 +5,13 @@ TESTNAME = ms-queue
 HEADERS = my_queue.h
 OBJECTS = main.o my_queue.o
 
-CXXFLAGS += -I /home/vagrant/c11tester/include
-
 all: $(TESTNAME)
 
 $(TESTNAME): $(HEADERS) $(OBJECTS)
-       $(CC) -o $@ $(OBJECTS) $(CFLAGS) $(LDFLAGS)
+       $(CXX) -o $@ $(OBJECTS) $(CXXFLAGS) $(LDFLAGS)
 
 %.o: %.c
-       $(CC) -c -o $@ $(CFLAGS)
+       $(CXX) -c -o $@ $< $(CXXFLAGS)
 
 clean:
        rm -f $(TESTNAME) *.o
index fc31f9c41a144e1ed946b79783ab2060303e8f71..d2084142159fde866f2eab9a8fc91a6bb16be0b7 100644 (file)
@@ -1,13 +1,10 @@
 #include <stdlib.h>
 #include <stdio.h>
-#include <threads.h>
-//#include "cds_threads.h"
+#include "cds_threads.h"
 
 #include "my_queue.h"
 #include "model-assert.h"
 
-#define user_main main
-
 static int procs = 4;
 static queue_t *queue;
 static thrd_t *threads;
@@ -17,10 +14,10 @@ static int num_threads;
 
 int get_thread_num()
 {
-       thrd_t curr = thrd_current();
+       //thrd_t curr = thrd_current();
        int i;
        for (i = 0; i < num_threads; i++)
-               if (curr.priv == threads[i].priv)
+               if (std::this_thread::get_id() == threads[i].get_id())
                        return i;
        MODEL_ASSERT(0);
        return -1;
@@ -30,6 +27,7 @@ bool succ1, succ2;
 
 static void main_task(void *param)
 {
+       unsigned int val;
        int pid = *((int *)param);
        if (!pid) {
                input[0] = 17;
@@ -53,7 +51,7 @@ int user_main(int argc, char **argv)
        MODEL_ASSERT(queue);
 
        num_threads = procs;
-       threads = (thrd_t *)malloc(num_threads * sizeof(thrd_t));
+       threads = (std::thread *)malloc(num_threads * sizeof(std::thread));
        param = (int *)malloc(num_threads * sizeof(*param));
        input = (unsigned *)calloc(num_threads, sizeof(*input));
        output = (unsigned *)calloc(num_threads, sizeof(*output));
@@ -61,10 +59,11 @@ int user_main(int argc, char **argv)
        init_queue(queue, num_threads);
        for (i = 0; i < num_threads; i++) {
                param[i] = i;
-               thrd_create(&threads[i], main_task, &param[i]);
+               //threads[i] = std::thread(main_task, &param[i]);
+                new (&threads[i])std::thread(main_task, &param[i]);
        }
        for (i = 0; i < num_threads; i++)
-               thrd_join(threads[i]);
+               threads[i].join();
 
        for (i = 0; i < num_threads; i++) {
                in_sum += input[i];
@@ -74,12 +73,11 @@ int user_main(int argc, char **argv)
                printf("input[%d] = %u\n", i, input[i]);
        for (i = 0; i < num_threads; i++)
                printf("output[%d] = %u\n", i, output[i]);
-/*
        if (succ1 && succ2)
                MODEL_ASSERT(in_sum == out_sum);
        else
-               MODEL_ASSERT(false);
-*/
+               MODEL_ASSERT (false);
+
        free(param);
        free(threads);
        free(queue);
index d746bdaca24f10d5ba7ca08f35c25508b9baf993..00af6d4e90949589cf389b5cd063dd78498c361b 100644 (file)
@@ -1,4 +1,4 @@
-#include <threads.h>
+#include "cds_threads.h"
 #include <stdlib.h>
 #include "librace.h"
 #include "model-assert.h"