changes
[cdsspec-compiler.git] / benchmark / ms-queue / my_queue.h
index 714be4f83d71daeb98b68a9f1681fd3076d5a39d..ce87b1d22eb5af1bace1c84c7356f89e4767ee58 100644 (file)
@@ -54,6 +54,11 @@ void init_queue(queue_t *q, int num_threads);
                @InitVar:
                        __queue = new_spec_list();
                        tag = new_id_tag(); // Beginning of available id
+               @Cleanup:
+                       if (__queue)
+                               free_spec_list(__queue);
+                       if (tag)
+                               free_id_tag(tag);
                @DefineFunc:
                        tag_elem_t* new_tag_elem(call_id_t id, unsigned int data) {
                                tag_elem_t *e = (tag_elem_t*) CMODEL_MALLOC(sizeof(tag_elem_t));
@@ -88,13 +93,14 @@ void init_queue(queue_t *q, int num_threads);
 /**
        @Begin
        @Interface: Enqueue
-       @Commit_point_set: Enqueue_Read_Tail | Enqueue_UpdateNext | Enqueue_UpdateOrLoad_Tail
+       @Commit_point_set: Enqueue_Read_Tail | Enqueue_UpdateNext | Enqueue_Additional_Tail_LoadOrCAS
        @ID: get_and_inc(tag)
        @Action:
                # __ID__ is an internal macro that refers to the id of the current
                # interface call
                tag_elem_t *elem = new_tag_elem(__ID__, val);
                push_back(__queue, elem);
+               //model_print("Enqueue: input=%d\n", val);
        @End
 */
 void enqueue(queue_t *q, unsigned int val);
@@ -109,14 +115,13 @@ void enqueue(queue_t *q, unsigned int val);
                if (size(__queue) > 0) {
                        _Old_Val = get_data(front(__queue));
                        pop_front(__queue);
-               } else {
-                       _Old_Val = 0;
                }
+       //      model_print("Dequeue: __RET__=%d, retVal=%d, Old_Val=%d\n", __RET__, *retVal, _Old_Val);
        @Post_check:
-               __RET__ ? *output == _Old_Val : _Old_Val == 0
+               _Old_Val == 0 ? !__RET__ : _Old_Val == *retVal
        @End
 */
-bool dequeue(queue_t *q, int *output);
+bool dequeue(queue_t *q, int *retVal);
 int get_thread_num();
 
 #endif