@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));
/**
@Begin
@Interface: Enqueue
- @Commit_point_set: Enqueue_Read_Tail | Enqueue_UpdateNext
+ @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);
+ //model_print("Enqueue: input=%d\n", val);
@End
*/
void enqueue(queue_t *q, unsigned int val);
_Old_Val = get_data(front(__queue));
pop_front(__queue);
}
- model_print("Dequeue: __RET=%d, retVal=%d\n", __RET__, *retVal);
+ // model_print("Dequeue: __RET__=%d, retVal=%d, Old_Val=%d\n", __RET__, *retVal, _Old_Val);
@Post_check:
_Old_Val == 0 ? !__RET__ : _Old_Val == *retVal
@End