X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=cmodelint.cc;h=76b4c90fa51b139cb8e70f891d8cc13692a34515;hb=ac8e176cd4a8756244c12dbbcaf961d27bfc8a74;hp=8919041be4589670d228ad3e3e7b00b7132a5f2b;hpb=20926923f6de1790fdd368d5e7fa1738abe7b9a6;p=model-checker.git diff --git a/cmodelint.cc b/cmodelint.cc index 8919041..76b4c90 100644 --- a/cmodelint.cc +++ b/cmodelint.cc @@ -1,10 +1,10 @@ #include "model.h" #include "cmodelint.h" +#include "threads-model.h" /** Performs a read action.*/ uint64_t model_read_action(void * obj, memory_order ord) { - model->switch_to_master(new ModelAction(ATOMIC_READ, ord, obj)); - return thread_current()->get_return_value(); + return model->switch_to_master(new ModelAction(ATOMIC_READ, ord, obj)); } /** Performs a write action.*/ @@ -23,8 +23,7 @@ void model_init_action(void * obj, uint64_t val) { * a write. */ uint64_t model_rmwr_action(void *obj, memory_order ord) { - model->switch_to_master(new ModelAction(ATOMIC_RMWR, ord, obj)); - return thread_current()->get_return_value(); + return model->switch_to_master(new ModelAction(ATOMIC_RMWR, ord, obj)); } /** Performs the write part of a RMW action. */ @@ -36,3 +35,8 @@ void model_rmw_action(void *obj, memory_order ord, uint64_t val) { void model_rmwc_action(void *obj, memory_order ord) { model->switch_to_master(new ModelAction(ATOMIC_RMWC, ord, obj)); } + +/** Issues a fence operation. */ +void model_fence_action(memory_order ord) { + model->switch_to_master(new ModelAction(ATOMIC_FENCE, ord, NULL)); +}