X-Git-Url: http://plrg.eecs.uci.edu/git/?p=model-checker.git;a=blobdiff_plain;f=datarace.cc;h=f0d3dc619489d780ea7e9be237b2007d428a4b33;hp=5a23d82d5d97d865f486a9ebbd2913b93e9230f9;hb=b6db821be4ff9af669ff596a37d144006f6bbdaf;hpb=2db2ef3b8bdabacc7784fd5a4e7e7520f1cd2298 diff --git a/datarace.cc b/datarace.cc index 5a23d82..f0d3dc6 100644 --- a/datarace.cc +++ b/datarace.cc @@ -6,17 +6,15 @@ struct ShadowTable *root; /** This function initialized the data race detector. */ - void initRaceDetector() { root=(struct ShadowTable *) calloc(sizeof(struct ShadowTable),1); } -/** This function looks up the entry in the shadow table corresponding - to a given address.*/ - +/** This function looks up the entry in the shadow table corresponding to a + * given address.*/ static uint64_t * lookupAddressEntry(void * address) { struct ShadowTable *currtable=root; -#ifdef BIT48 +#if BIT48 currtable=(struct ShadowTable *) currtable->array[(((uintptr_t)address)>>32)&MASK16BIT]; if (currtable==NULL) { currtable=(struct ShadowTable *) (root->array[(((uintptr_t)address)>>32)&MASK16BIT]=calloc(sizeof(struct ShadowTable),1)); @@ -49,7 +47,6 @@ static bool clock_may_race(ClockVector *clock1, thread_id_t tid1, * Expands a record from the compact form to the full form. This is * necessary for multiple readers or for very large thread ids or time * stamps. */ - static void expandRecord(uint64_t * shadow) { uint64_t shadowval=*shadow; @@ -74,14 +71,11 @@ static void expandRecord(uint64_t * shadow) { } /** This function is called when we detect a data race.*/ - static void reportDataRace() { printf("The reportDataRace method should report useful things about this datarace!\n"); } -/** This function does race detection for a write on an expanded - * record. */ - +/** This function does race detection for a write on an expanded record. */ void fullRaceCheckWrite(thread_id_t thread, uint64_t * shadow, ClockVector *currClock) { struct RaceRecord * record=(struct RaceRecord *) (*shadow); @@ -116,9 +110,7 @@ void fullRaceCheckWrite(thread_id_t thread, uint64_t * shadow, ClockVector *curr record->writeClock=ourClock; } -/** This function does race detection on a write. - */ - +/** This function does race detection on a write. */ void raceCheckWrite(thread_id_t thread, void *location, ClockVector *currClock) { uint64_t * shadow=lookupAddressEntry(location); uint64_t shadowval=*shadow; @@ -161,9 +153,7 @@ void raceCheckWrite(thread_id_t thread, void *location, ClockVector *currClock) *shadow = ENCODEOP(0, 0, threadid, ourClock); } -/** This function does race detection on a read for an expanded - * record. */ - +/** This function does race detection on a read for an expanded record. */ void fullRaceCheckRead(thread_id_t thread, uint64_t * shadow, ClockVector *currClock) { struct RaceRecord * record=(struct RaceRecord *) (*shadow); @@ -222,7 +212,6 @@ void fullRaceCheckRead(thread_id_t thread, uint64_t * shadow, ClockVector *currC } /** This function does race detection on a read. */ - void raceCheckRead(thread_id_t thread, void *location, ClockVector *currClock) { uint64_t * shadow=lookupAddressEntry(location); uint64_t shadowval=*shadow;