add support for docs
[model-checker.git] / clockvector.cc
index da459d0e0faf461aab67af55ab7f3338082fdd9d..f411f50d64bcb9ca6c1b7eefe48f871bcc1c1bff 100644 (file)
@@ -1,5 +1,6 @@
 #include <algorithm>
 #include <cstring>
+#include <stdlib.h>
 
 #include "model.h"
 #include "action.h"
@@ -8,14 +9,11 @@
 
 ClockVector::ClockVector(ClockVector *parent, ModelAction *act)
 {
-       num_threads = parent ? parent->num_threads : 1;
-       if (act && act->get_type() == THREAD_CREATE)
-               num_threads++;
+       num_threads = model->get_num_threads();
        clock = (int *)MYMALLOC(num_threads * sizeof(int));
+       memset(clock, 0, num_threads * sizeof(int));
        if (parent)
                std::memcpy(clock, parent->clock, parent->num_threads * sizeof(int));
-       else
-               clock[0] = 0;
 
        if (act)
                clock[id_to_int(act->get_tid())] = act->get_seq_number();
@@ -59,3 +57,11 @@ bool ClockVector::happens_before(ModelAction *act, thread_id_t id)
                return act->get_seq_number() < clock[i];
        return false;
 }
+
+void ClockVector::print()
+{
+       int i;
+       printf("CV: (");
+       for (i = 0; i < num_threads; i++)
+               printf("%2d%s", clock[i], (i == num_threads - 1) ? ")\n" : ", ");
+}