changeset 902:58037271d763

...
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Wed, 27 Jan 2021 16:52:11 +0900
parents e4f918ebd927
children c9bd13e2ac59
files src/parallel_execution/ModelChecking/MCWorker.cbc src/parallel_execution/SingleLinkedQueue.cbc src/parallel_execution/examples/DPPMC/PhilsImpl.cbc
diffstat 3 files changed, 10 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/parallel_execution/ModelChecking/MCWorker.cbc	Wed Jan 27 16:31:41 2021 +0900
+++ b/src/parallel_execution/ModelChecking/MCWorker.cbc	Wed Jan 27 16:52:11 2021 +0900
@@ -82,7 +82,7 @@
     }
     printf("mc worker take\n");
     task->worker = worker;
-    enum Code taskCg = task->next;
+    //enum Code taskCg = task->next;
     struct Queue* mcQueue = mcWorker->mcQueue;
     goto mcQueue->put(task, taskReceiveMCWorker);
 }
--- a/src/parallel_execution/SingleLinkedQueue.cbc	Wed Jan 27 16:31:41 2021 +0900
+++ b/src/parallel_execution/SingleLinkedQueue.cbc	Wed Jan 27 16:52:11 2021 +0900
@@ -96,25 +96,24 @@
 
 
 typedef struct task_iterator {
-    struct task_iterator *prev;
+    Element* prev;
     StateDB state;
     Element* list;
     Element* last;
 } TaskIterator, *TaskIteratorPtr;
 
 
-Element* createQueueIterator(struct SingleLinkedQueue* queue) {
-    TaskIteratorPtr new = (TaskIteratorPtr)malloc(sizeof(TaskIterator));
+TaskIteratorPtr createQueueIterator(struct SingleLinkedQueue* queue, struct Element* prev) {
+    TaskIteratorPtr new = (TaskIteratorPtr)calloc(1, sizeof(TaskIterator));
     if (!new) exit(1);
-
-    new->prev  = queue->top;
+    new->prev  = prev;
     new->state = NULL;
     new->list  = queue->top;
     new->last  = queue->last;
     return new;
 }
 
-Element* takeNextIterator(struct SingleLinkedQueue* queue, TaskIteratorPtr iterator) {
+TaskIteratorPtr takeNextIterator(struct SingleLinkedQueue* queue, TaskIteratorPtr iterator) {
   struct Element* elem = iterator->list;
   if (!elem) {
     return NULL;
@@ -122,13 +121,14 @@
 
   struct Element* next = elem->next;
   if (next == NULL) {
-    return next;
+    return NULL;
   }
 
   if (next == iterator->last) {
     return NULL;
   }
 
+  iterator->prev = elem;
   iterator->list = next;
-  return next;
+  return iterator;
 }
--- a/src/parallel_execution/examples/DPPMC/PhilsImpl.cbc	Wed Jan 27 16:31:41 2021 +0900
+++ b/src/parallel_execution/examples/DPPMC/PhilsImpl.cbc	Wed Jan 27 16:52:11 2021 +0900
@@ -37,7 +37,7 @@
      struct AtomicT_intImpl_int* right = (struct AtomicT_intImpl_int*)phils->Rightfork->atomicT_int;
      struct AtomicT_intImpl_int* left  = (struct AtomicT_intImpl_int*)phils->Leftfork->atomicT_int;
      add_memory(&right->atomic, sizeof(int), &context->mem);
-     add_memory(&left->atomic, sizeof(int), &context->mem);
+     return add_memory(&left->atomic, sizeof(int), &context->mem);
 }