From f291abaf7a05ebdc5981072212b55265dafc1c4a Mon Sep 17 00:00:00 2001 From: Brian Norris Date: Wed, 11 Jul 2012 14:10:40 -0700 Subject: [PATCH 1/1] action: add 'reads_from' member variable Just printed out for now, but the 'reads_from' parameter might be used more later. --- action.cc | 6 +++++- action.h | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/action.cc b/action.cc index f41b0eb..c96949b 100644 --- a/action.cc +++ b/action.cc @@ -10,6 +10,7 @@ ModelAction::ModelAction(action_type_t type, memory_order order, void *loc, int order(order), location(loc), value(value), + reads_from(NULL), cv(NULL) { Thread *t = thread_current(); @@ -132,6 +133,7 @@ void ModelAction::read_from(const ModelAction *act) ASSERT(cv); if (act->is_release() && this->is_acquire()) cv->merge(act->cv); + reads_from = act; value = act->value; } @@ -175,8 +177,10 @@ void ModelAction::print(void) const type_str = "unknown type"; } - printf("(%3d) Thread: %-2d Action: %-13s MO: %d Loc: %14p Value: %d", + printf("(%3d) Thread: %-2d Action: %-13s MO: %d Loc: %14p Value: %-4d", seq_number, id_to_int(tid), type_str, order, location, value); + if (reads_from) + printf(" Rf: %d", reads_from->get_seq_number()); if (cv) { printf("\t"); cv->print(); diff --git a/action.h b/action.h index 4504fd8..731c319 100644 --- a/action.h +++ b/action.h @@ -47,6 +47,7 @@ public: void * get_location() const { return location; } modelclock_t get_seq_number() const { return seq_number; } int get_value() const { return value; } + const ModelAction * get_reads_from() const { return reads_from; } Node * get_node() const { return node; } void set_node(Node *n) { node = n; } @@ -94,6 +95,9 @@ private: * should probably be something longer. */ int value; + /** The action that this action reads from. Only valid for reads */ + const ModelAction *reads_from; + /** A back reference to a Node in NodeStack, if this ModelAction is * saved on the NodeStack. */ Node *node; -- 2.34.1