]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Wrapped DRD_() macro around all vector clock function names.
authorBart Van Assche <bvanassche@acm.org>
Sat, 14 Feb 2009 16:55:19 +0000 (16:55 +0000)
committerBart Van Assche <bvanassche@acm.org>
Sat, 14 Feb 2009 16:55:19 +0000 (16:55 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9159

12 files changed:
drd/drd_barrier.h
drd/drd_basics.h
drd/drd_load_store.c
drd/drd_main.c
drd/drd_mutex.h
drd/drd_rwlock.h
drd/drd_segment.c
drd/drd_semaphore.h
drd/drd_thread.c
drd/drd_thread.h
drd/drd_vc.c
drd/drd_vc.h

index f525f155561156e00e0a4fa4b349d4c6f391a402..53ee8eb5aa30f8d683a6d2583da326320f40fad1 100644 (file)
@@ -23,7 +23,7 @@
 */
 
 
-// Barrier state information.
+/* Barrier state information. */
 
 
 #ifndef __DRD_BARRIER_H
@@ -32,7 +32,6 @@
 
 #include "drd_clientreq.h"    // BarrierT
 #include "drd_thread.h"       // DrdThreadId
-#include "drd_vc.h"
 #include "pub_tool_basics.h"  // Addr
 
 
index 81f52d4740bb9f64cd2221f0ad3c913aae66823c..202e8df3b1d744a76861cbc8a591f7b4b9727464 100644 (file)
@@ -35,4 +35,7 @@
 #define DRD_(str) VGAPPEND(vgDrd_, str)
 
 
+typedef UInt DrdThreadId;
+
+
 #endif /* __DRD_BASICS_H */
index d53bde64f6bc6ea7ccfb49069452fd6d572f1226..a219cec6930ccbec7e3917a60df76fac901e5742 100644 (file)
@@ -24,6 +24,7 @@
 
 #include "drd_bitmap.h"
 #include "drd_thread_bitmap.h"
+#include "drd_vc.h"            /* DRD_(vc_snprint)() */
 
 /* Include several source files here in order to allow the compiler to */
 /* do more inlining.                                                   */
@@ -73,7 +74,7 @@ void DRD_(trace_mem_access)(const Addr addr, const SizeT size,
   if (DRD_(is_any_traced)(addr, addr + size))
   {
     char vc[80];
-    vc_snprint(vc, sizeof(vc), thread_get_vc(thread_get_running_tid()));
+    DRD_(vc_snprint)(vc, sizeof(vc), thread_get_vc(thread_get_running_tid()));
     VG_(message)(Vg_UserMsg,
                  "%s 0x%lx size %ld (vg %d / drd %d / vc %s)",
                  access_type == eLoad
index 50b1d0371fed70db4ef60cdc7a0d67af664a0139..fb7934d609272d997872c641a12fba37aeb37f61 100644 (file)
@@ -35,7 +35,6 @@
 #include "drd_semaphore.h"
 #include "drd_suppression.h"
 #include "drd_thread.h"
-#include "drd_vc.h"
 #include "libvex_guest_offsets.h"
 #include "pub_drd_bitmap.h"
 #include "pub_tool_vki.h"         // Must be included before pub_tool_libcproc
index 289c1ea4c20e445a6fedd083f8b3235717ee184a..d95064b24d2d0ccb5c385b3b9d51b0abc64a1289 100644 (file)
@@ -29,7 +29,6 @@
 
 #include "drd_clientreq.h"        // MutexT
 #include "drd_thread.h"           // DrdThreadId
-#include "drd_vc.h"
 #include "pub_tool_basics.h"      // Addr
 
 
index 6afcd5d52bd9a118d64fa8947bec3f0b407deb1d..3a79d7f4f05a3b4144d9b59e949a278b299eab19 100644 (file)
@@ -32,7 +32,6 @@
 
 #include "drd_clientobj.h"        // struct rwlock_info
 #include "drd_thread.h"           // DrdThreadId
-#include "drd_vc.h"
 #include "pub_tool_basics.h"      // Addr
 
 
index 7e3022a38c2c52b4f92f74cb79ac8af4394d5449..6cb3246249517538159c37cb1422b144e58ae038 100644 (file)
@@ -73,10 +73,10 @@ void sg_init(Segment* const sg,
     sg->stacktrace = 0;
 
   if (creator_sg)
-    vc_copy(&sg->vc, &creator_sg->vc);
+    DRD_(vc_copy)(&sg->vc, &creator_sg->vc);
   else
-    vc_init(&sg->vc, 0, 0);
-  vc_increment(&sg->vc, created);
+    DRD_(vc_init)(&sg->vc, 0, 0);
+  DRD_(vc_increment)(&sg->vc, created);
   sg->bm = bm_new();
 
   if (drd_trace_segment)
@@ -88,7 +88,7 @@ void sg_init(Segment* const sg,
                   ? DrdThreadIdToVgThreadId(created)
                   : DRD_INVALID_THREADID,
                   created);
-    vc_snprint(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
+    DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
                &sg->vc);
     VG_(message)(Vg_UserMsg, "%s", msg);
   }
@@ -101,7 +101,7 @@ void sg_cleanup(Segment* const sg)
   tl_assert(sg);
   tl_assert(sg->refcnt == 0);
 
-  vc_cleanup(&sg->vc);
+  DRD_(vc_cleanup)(&sg->vc);
   bm_delete(sg->bm);
   sg->bm = 0;
 }
@@ -131,7 +131,7 @@ void sg_delete(Segment* const sg)
     char msg[256];
     VG_(snprintf)(msg, sizeof(msg),
                   "Discarding the segment with vector clock ");
-    vc_snprint(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
+    DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
                &sg->vc);
     VG_(message)(Vg_UserMsg, "%s", msg);
   }
@@ -175,7 +175,7 @@ void sg_put(Segment* const sg)
     VG_(snprintf)(msg, sizeof(msg),
                   "Decrementing segment reference count %d -> %d with vc ",
                   sg->refcnt, sg->refcnt - 1);
-    vc_snprint(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
+    DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
                &sg->vc);
     VG_(message)(Vg_UserMsg, "%s", msg);
   }
@@ -201,11 +201,11 @@ void sg_merge(const Segment* const sg1, Segment* const sg2)
       char msg[256];
 
       VG_(snprintf)(msg, sizeof(msg), "Merging segments with vector clocks ");
-      vc_snprint(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
+      DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
                  &sg1->vc);
       VG_(snprintf)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
                     " and ");
-      vc_snprint(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
+      DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
                  &sg2->vc);
       VG_(message)(Vg_UserMsg, "%s", msg);
   }
@@ -220,7 +220,7 @@ void sg_print(const Segment* const sg)
 {
   tl_assert(sg);
   VG_(printf)("vc: ");
-  vc_print(&sg->vc);
+  DRD_(vc_print)(&sg->vc);
   VG_(printf)("\n");
   bm_print(sg->bm);
 }
index 80dde06ddb900cf47f65d4b7e09c04cd47b807e3..ecca2ac29e1612f6de8aab2f62a01ec04eae5d38 100644 (file)
@@ -31,7 +31,6 @@
 
 
 #include "drd_thread.h"           // DrdThreadId
-#include "drd_vc.h"
 #include "pub_tool_basics.h"      // Addr
 
 
index 42f2144205951eaeb7bd74b0943bb10e05e1dda4..2523d7beb4cac1ce50a76ddf1519b718d640d117 100644 (file)
@@ -257,8 +257,8 @@ void DRD_(thread_post_join)(DrdThreadId drd_joiner, DrdThreadId drd_joinee)
     {
       VG_(snprintf)(msg + VG_(strlen)(msg), msg_size - VG_(strlen)(msg),
                     ", new vc: ");
-      vc_snprint(msg + VG_(strlen)(msg), msg_size - VG_(strlen)(msg),
-                 thread_get_vc(drd_joiner));
+      DRD_(vc_snprint)(msg + VG_(strlen)(msg), msg_size - VG_(strlen)(msg),
+                       thread_get_vc(drd_joiner));
     }
     VG_(message)(Vg_DebugMsg, "%s", msg);
     VG_(free)(msg);
@@ -568,9 +568,9 @@ static void thread_compute_minimum_vc(VectorClock* vc)
     if (latest_sg)
     {
       if (first)
-        vc_assign(vc, &latest_sg->vc);
+        DRD_(vc_assign)(vc, &latest_sg->vc);
       else
-        vc_min(vc, &latest_sg->vc);
+        DRD_(vc_min)(vc, &latest_sg->vc);
       first = False;
     }
   }
@@ -589,9 +589,9 @@ static void thread_compute_maximum_vc(VectorClock* vc)
     if (latest_sg)
     {
       if (first)
-        vc_assign(vc, &latest_sg->vc);
+        DRD_(vc_assign)(vc, &latest_sg->vc);
       else
-        vc_combine(vc, &latest_sg->vc);
+        DRD_(vc_combine)(vc, &latest_sg->vc);
       first = False;
     }
   }
@@ -609,25 +609,25 @@ static void thread_discard_ordered_segments(void)
 
   s_discard_ordered_segments_count++;
 
-  vc_init(&thread_vc_min, 0, 0);
+  DRD_(vc_init)(&thread_vc_min, 0, 0);
   thread_compute_minimum_vc(&thread_vc_min);
   if (sg_get_trace())
   {
     char msg[256];
     VectorClock thread_vc_max;
 
-    vc_init(&thread_vc_max, 0, 0);
+    DRD_(vc_init)(&thread_vc_max, 0, 0);
     thread_compute_maximum_vc(&thread_vc_max);
     VG_(snprintf)(msg, sizeof(msg),
                   "Discarding ordered segments -- min vc is ");
-    vc_snprint(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
-               &thread_vc_min);
+    DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
+                     &thread_vc_min);
     VG_(snprintf)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
                   ", max vc is ");
-    vc_snprint(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
-               &thread_vc_max);
+    DRD_(vc_snprint)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
+                     &thread_vc_max);
     VG_(message)(Vg_UserMsg, "%s", msg);
-    vc_cleanup(&thread_vc_max);
+    DRD_(vc_cleanup)(&thread_vc_max);
   }
 
   for (i = 0; i < sizeof(s_threadinfo) / sizeof(s_threadinfo[0]); i++)
@@ -635,13 +635,13 @@ static void thread_discard_ordered_segments(void)
     Segment* sg;
     Segment* sg_next;
     for (sg = s_threadinfo[i].first;
-         sg && (sg_next = sg->next) && vc_lte(&sg->vc, &thread_vc_min);
+         sg && (sg_next = sg->next) && DRD_(vc_lte)(&sg->vc, &thread_vc_min);
          sg = sg_next)
     {
       thread_discard_segment(i, sg);
     }
   }
-  vc_cleanup(&thread_vc_min);
+  DRD_(vc_cleanup)(&thread_vc_min);
 }
 
 /** Merge all segments that may be merged without triggering false positives
@@ -690,7 +690,7 @@ static void thread_merge_segments(void)
  *  @param new_sg Pointer to the most recent segment of thread tid.
  */
 static Bool conflict_set_update_needed(const DrdThreadId tid,
-                                     const Segment* const new_sg)
+                                       const Segment* const new_sg)
 {
 #if 0
   unsigned i;
@@ -721,19 +721,19 @@ static Bool conflict_set_update_needed(const DrdThreadId tid,
       /* If the expression below evaluates to false, this expression will */
       /* also evaluate to false for all subsequent iterations. So stop    */
       /* iterating.                                                       */
-      if (vc_lte(&q->vc, &old_sg->vc))
+      if (DRD_(vc_lte)(&q->vc, &old_sg->vc))
         break;
       /* If the vector clock of the 2nd the last segment is not ordered   */
       /* to the vector clock of segment q, and the last segment is, ask   */
       /* the caller to update the conflict set.                             */
-      if (! vc_lte(&old_sg->vc, &q->vc))
+      if (! DRD_(vc_lte)(&old_sg->vc, &q->vc))
       {
         return True;
       }
       /* If the vector clock of the last segment is not ordered to the    */
       /* vector clock of segment q, ask the caller to update the conflict   */
       /* set.                                                             */
-      if (! vc_lte(&q->vc, &new_sg->vc) && ! vc_lte(&new_sg->vc, &q->vc))
+      if (! DRD_(vc_lte)(&q->vc, &new_sg->vc) && ! DRD_(vc_lte)(&new_sg->vc, &q->vc))
       {
         return True;
       }
@@ -785,7 +785,7 @@ void thread_combine_vc(DrdThreadId joiner, DrdThreadId joinee)
             && joinee != DRD_INVALID_THREADID);
   tl_assert(s_threadinfo[joiner].last);
   tl_assert(s_threadinfo[joinee].last);
-  vc_combine(&s_threadinfo[joiner].last->vc, &s_threadinfo[joinee].last->vc);
+  DRD_(vc_combine)(&s_threadinfo[joiner].last->vc, &s_threadinfo[joinee].last->vc);
   thread_discard_ordered_segments();
 
   if (joiner == s_drd_running_tid)
@@ -804,7 +804,7 @@ void thread_combine_vc2(DrdThreadId tid, const VectorClock* const vc)
             && tid != DRD_INVALID_THREADID);
   tl_assert(s_threadinfo[tid].last);
   tl_assert(vc);
-  vc_combine(&s_threadinfo[tid].last->vc, vc);
+  DRD_(vc_combine)(&s_threadinfo[tid].last->vc, vc);
   thread_compute_conflict_set(&s_conflict_set, tid);
   thread_discard_ordered_segments();
   s_conflict_set_combine_vc_count++;
@@ -940,9 +940,9 @@ thread_report_conflicting_segments_segment(const DrdThreadId tid,
         // decreasing vector clocks, if q->vc <= p->vc, then 
         // q->next->vc <= p->vc will also hold. Hence, break out of the
         // loop once this condition is met.
-        if (vc_lte(&q->vc, &p->vc))
+        if (DRD_(vc_lte)(&q->vc, &p->vc))
           break;
-        if (! vc_lte(&p->vc, &q->vc))
+        if (! DRD_(vc_lte)(&p->vc, &q->vc))
         {
           if (bm_has_conflict_with(q->bm, addr, addr + size, access_type))
           {
@@ -1030,9 +1030,9 @@ static void thread_compute_conflict_set(struct bitmap** conflict_set,
     VG_(snprintf)(msg, sizeof(msg),
                   "computing conflict set for thread %d/%d with vc ",
                   DrdThreadIdToVgThreadId(tid), tid);
-    vc_snprint(msg + VG_(strlen)(msg),
-               sizeof(msg) - VG_(strlen)(msg),
-               &s_threadinfo[tid].last->vc);
+    DRD_(vc_snprint)(msg + VG_(strlen)(msg),
+                     sizeof(msg) - VG_(strlen)(msg),
+                     &s_threadinfo[tid].last->vc);
     VG_(message)(Vg_UserMsg, "%s", msg);
   }
 
@@ -1047,9 +1047,9 @@ static void thread_compute_conflict_set(struct bitmap** conflict_set,
       VG_(snprintf)(msg, sizeof(msg),
                     "conflict set: thread [%d] at vc ",
                     tid);
-      vc_snprint(msg + VG_(strlen)(msg),
-                 sizeof(msg) - VG_(strlen)(msg),
-                 &p->vc);
+      DRD_(vc_snprint)(msg + VG_(strlen)(msg),
+                       sizeof(msg) - VG_(strlen)(msg),
+                       &p->vc);
       VG_(message)(Vg_UserMsg, "%s", msg);
     }
 
@@ -1060,16 +1060,16 @@ static void thread_compute_conflict_set(struct bitmap** conflict_set,
         const Segment* q;
         for (q = s_threadinfo[j].last; q; q = q->prev)
         {
-          if (! vc_lte(&q->vc, &p->vc) && ! vc_lte(&p->vc, &q->vc))
+          if (! DRD_(vc_lte)(&q->vc, &p->vc) && ! DRD_(vc_lte)(&p->vc, &q->vc))
           {
             if (s_trace_conflict_set)
             {
               char msg[256];
               VG_(snprintf)(msg, sizeof(msg),
                             "conflict set: [%d] merging segment ", j);
-              vc_snprint(msg + VG_(strlen)(msg),
-                         sizeof(msg) - VG_(strlen)(msg),
-                         &q->vc);
+              DRD_(vc_snprint)(msg + VG_(strlen)(msg),
+                               sizeof(msg) - VG_(strlen)(msg),
+                               &q->vc);
               VG_(message)(Vg_UserMsg, "%s", msg);
             }
             bm_merge2(*conflict_set, q->bm);
@@ -1081,9 +1081,9 @@ static void thread_compute_conflict_set(struct bitmap** conflict_set,
               char msg[256];
               VG_(snprintf)(msg, sizeof(msg),
                             "conflict set: [%d] ignoring segment ", j);
-              vc_snprint(msg + VG_(strlen)(msg),
-                         sizeof(msg) - VG_(strlen)(msg),
-                         &q->vc);
+              DRD_(vc_snprint)(msg + VG_(strlen)(msg),
+                               sizeof(msg) - VG_(strlen)(msg),
+                               &q->vc);
               VG_(message)(Vg_UserMsg, "%s", msg);
             }
           }
index 525c9452eef888c0e723bad3ffcf928976daa594..d7eecab7287f7f280dbd149eb3befe1d79ed3eae 100644 (file)
@@ -53,7 +53,6 @@
 
 // Type definitions.
 
-typedef UInt DrdThreadId;
 typedef UWord PThreadId;
 
 typedef struct
index 1d4d833689aa3e621b3af1766013c5e865f0df46..faa356f0811cbf1289348c533f6673553898069c 100644 (file)
 #include "drd_vc.h"
 #include "pub_tool_basics.h"      // Addr, SizeT
 #include "pub_tool_libcassert.h"  // tl_assert()
-#include "pub_tool_libcbase.h"    // VG_(memset), VG_(memmove)
+#include "pub_tool_libcbase.h"    // VG_(memcpy)
 #include "pub_tool_libcprint.h"   // VG_(printf)
 #include "pub_tool_mallocfree.h"  // VG_(malloc), VG_(free)
-#include "pub_tool_threadstate.h" // VG_(get_running_tid)
 
 
+/* Local function declarations. */
+
 static
-void vc_reserve(VectorClock* const vc, const unsigned new_capacity);
+void DRD_(vc_reserve)(VectorClock* const vc, const unsigned new_capacity);
+
 
+/* Function definitions. */
 
-void vc_init(VectorClock* const vc,
-             const VCElem* const vcelem,
-             const unsigned size)
+/**
+ * Initialize the memory 'vc' points at as a vector clock with size 'size'.
+ * If the pointer 'vcelem' is not null, it is assumed to be an array with
+ * 'size' elements and it becomes the initial value of the vector clock.
+ */
+void DRD_(vc_init)(VectorClock* const vc,
+                   const VCElem* const vcelem,
+                   const unsigned size)
 {
   tl_assert(vc);
   vc->size = 0;
   vc->capacity = 0;
   vc->vc = 0;
-  vc_reserve(vc, size);
+  DRD_(vc_reserve)(vc, size);
   tl_assert(size == 0 || vc->vc != 0);
   if (vcelem)
   {
@@ -53,32 +61,32 @@ void vc_init(VectorClock* const vc,
   }
 }
 
-void vc_cleanup(VectorClock* const vc)
+/** Reset vc to the empty vector clock. */
+void DRD_(vc_cleanup)(VectorClock* const vc)
 {
-  vc_reserve(vc, 0);
+  DRD_(vc_reserve)(vc, 0);
 }
 
 /** Copy constructor -- initializes *new. */
-void vc_copy(VectorClock* const new,
-             const VectorClock* const rhs)
+void DRD_(vc_copy)(VectorClock* const new, const VectorClock* const rhs)
 {
-  vc_init(new, rhs->vc, rhs->size);
+  DRD_(vc_init)(new, rhs->vc, rhs->size);
 }
 
 /** Assignment operator -- *lhs is already a valid vector clock. */
-void vc_assign(VectorClock* const lhs,
-               const VectorClock* const rhs)
+void DRD_(vc_assign)(VectorClock* const lhs, const VectorClock* const rhs)
 {
-  vc_cleanup(lhs);
-  vc_copy(lhs, rhs);
+  DRD_(vc_cleanup)(lhs);
+  DRD_(vc_copy)(lhs, rhs);
 }
 
-void vc_increment(VectorClock* const vc, ThreadId const threadid)
+/** Increment the clock of thread 'tid' in vector clock 'vc'. */
+void DRD_(vc_increment)(VectorClock* const vc, DrdThreadId const tid)
 {
   unsigned i;
   for (i = 0; i < vc->size; i++)
   {
-    if (vc->vc[i].threadid == threadid)
+    if (vc->vc[i].threadid == tid)
     {
       typeof(vc->vc[i].count) const oldcount = vc->vc[i].count;
       vc->vc[i].count++;
@@ -88,14 +96,16 @@ void vc_increment(VectorClock* const vc, ThreadId const threadid)
     }
   }
 
-  // The specified thread ID does not yet exist in the vector clock
-  // -- insert it.
+  /*
+   * The specified thread ID does not yet exist in the vector clock
+   * -- insert it.
+   */
   {
-    VCElem vcelem = { threadid, 1 };
+    const VCElem vcelem = { tid, 1 };
     VectorClock vc2;
-    vc_init(&vc2, &vcelem, 1);
-    vc_combine(vc, &vc2);
-    vc_cleanup(&vc2);
+    DRD_(vc_init)(&vc2, &vcelem, 1);
+    DRD_(vc_combine)(vc, &vc2);
+    DRD_(vc_cleanup)(&vc2);
   }
 }
 
@@ -103,14 +113,14 @@ void vc_increment(VectorClock* const vc, ThreadId const threadid)
  * @return True if vector clocks vc1 and vc2 are ordered, and false otherwise.
  * Order is as imposed by thread synchronization actions ("happens before").
  */
-Bool vc_ordered(const VectorClock* const vc1,
-                const VectorClock* const vc2)
+Bool DRD_(vc_ordered)(const VectorClock* const vc1,
+                      const VectorClock* const vc2)
 {
-  return vc_lte(vc1, vc2) || vc_lte(vc2, vc1);
+  return DRD_(vc_lte)(vc1, vc2) || DRD_(vc_lte)(vc2, vc1);
 }
 
 /** Compute elementwise minimum. */
-void vc_min(VectorClock* const result, const VectorClock* const rhs)
+void DRD_(vc_min)(VectorClock* const result, const VectorClock* const rhs)
 {
   unsigned i;
   unsigned j;
@@ -118,7 +128,7 @@ void vc_min(VectorClock* const result, const VectorClock* const rhs)
   tl_assert(result);
   tl_assert(rhs);
 
-  vc_check(result);
+  DRD_(vc_check)(result);
 
   /* Next, combine both vector clocks into one. */
   i = 0;
@@ -145,26 +155,26 @@ void vc_min(VectorClock* const result, const VectorClock* const rhs)
       }
     }
   }
-  vc_check(result);
+  DRD_(vc_check)(result);
 }
 
 /**
  * Compute elementwise maximum.
  */
-void vc_combine(VectorClock* const result,
-                const VectorClock* const rhs)
+void DRD_(vc_combine)(VectorClock* const result, const VectorClock* const rhs)
 {
-  vc_combine2(result, rhs, -1);
+  DRD_(vc_combine2)(result, rhs, -1);
 }
 
-/** Compute elementwise maximum.
+/**
+ * Compute elementwise maximum.
  *
- *  @return True if *result and *rhs are equal, or if *result and *rhs only
- *          differ in the component with thread ID tid.
+ * @return True if *result and *rhs are equal, or if *result and *rhs only
+ *         differ in the component with thread ID tid.
  */
-Bool vc_combine2(VectorClock* const result,
-                 const VectorClock* const rhs,
-                 const ThreadId tid)
+Bool DRD_(vc_combine2)(VectorClock* const result,
+                       const VectorClock* const rhs,
+                       const DrdThreadId tid)
 {
   unsigned i;
   unsigned j;
@@ -188,13 +198,13 @@ Bool vc_combine2(VectorClock* const result,
       shared++;
   }
 
-  vc_check(result);
+  DRD_(vc_check)(result);
 
   new_size = result->size + rhs->size - shared;
   if (new_size > result->capacity)
-    vc_reserve(result, new_size);
+    DRD_(vc_reserve)(result, new_size);
 
-  vc_check(result);
+  DRD_(vc_check)(result);
 
   // Next, combine both vector clocks into one.
   i = 0;
@@ -251,13 +261,14 @@ Bool vc_combine2(VectorClock* const result,
       }
     }
   }
-  vc_check(result);
+  DRD_(vc_check)(result);
   tl_assert(result->size == new_size);
 
   return almost_equal;
 }
 
-void vc_print(const VectorClock* const vc)
+/** Print the contents of vector clock 'vc'. */
+void DRD_(vc_print)(const VectorClock* const vc)
 {
   unsigned i;
 
@@ -272,8 +283,12 @@ void vc_print(const VectorClock* const vc)
   VG_(printf)(" ]");
 }
 
-void vc_snprint(Char* const str, Int const size,
-                const VectorClock* const vc)
+/**
+ * Print the contents of vector clock 'vc' to the character array 'str' that
+ * has 'size' elements.
+ */
+void DRD_(vc_snprint)(Char* const str, const Int size,
+                      const VectorClock* const vc)
 {
   unsigned i;
   unsigned j = 1;
@@ -296,8 +311,15 @@ void vc_snprint(Char* const str, Int const size,
 
 /**
  * Invariant test.
+ *
+ * The function below tests whether the following two conditions are
+ * satisfied:
+ * - size <= capacity.
+ * - Vector clock elements are stored in thread ID order.
+ *
+ * If one of these conditions is not met, an assertion failure is triggered.
  */
-void vc_check(const VectorClock* const vc)
+void DRD_(vc_check)(const VectorClock* const vc)
 {
   unsigned i;
   tl_assert(vc->size <= vc->capacity);
@@ -313,7 +335,7 @@ void vc_check(const VectorClock* const vc)
  * block is increased, the newly allocated memory is not initialized.
  */
 static
-void vc_reserve(VectorClock* const vc, const unsigned new_capacity)
+void DRD_(vc_reserve)(VectorClock* const vc, const unsigned new_capacity)
 {
   tl_assert(vc);
   if (new_capacity > vc->capacity)
@@ -337,10 +359,11 @@ void vc_reserve(VectorClock* const vc, const unsigned new_capacity)
   tl_assert(new_capacity == 0 || vc->vc != 0);
 }
 
+#if 0
 /**
  * Unit test.
  */
-void vc_test(void)
+void DRD_(vc_test)(void)
 {
   VectorClock vc1;
   VCElem vc1elem[] = { { 3, 7 }, { 5, 8 }, };
@@ -378,3 +401,4 @@ void vc_test(void)
   vc_cleanup(&vc2);
   vc_cleanup(&vc3);
 }
+#endif
index 93ead91c947c63a5d2ca352eeb8a922afd915906..611586fde478d19fb64ce3e34f164da3dcb8e033 100644 (file)
 #define __DRD_VC_H
 
 
-// DRD vector clock implementation:
-// - One counter per thread.
-// - A vector clock is implemented as multiple pairs of (thread id, counter).
-// - Pairs are stored in an array sorted by thread id.
-// Semantics:
-// - Each time a thread performs an action that implies an ordering between
-//   intra-thread events, the counter of that thread is incremented.
-// - Vector clocks are compared by comparing all counters of all threads.
-// - When a thread synchronization action is performed that guarantees that
-//   new actions of the current thread are executed after the actions of the
-//   other thread, the vector clock of the synchronization object and the 
-//   current thread are combined (by taking the component-wise maximum).
-// - A vector clock is incremented during actions such as
-//   pthread_create(), pthread_mutex_unlock(), sem_post(). (Actions where
-//   an inter-thread ordering "arrow" starts).
+/*
+ * DRD vector clock implementation:
+ * - One counter per thread.
+ * - A vector clock is implemented as multiple pairs of (thread id, counter).
+ * - Pairs are stored in an array sorted by thread id.
+ *
+ * Semantics:
+ * - Each time a thread performs an action that implies an ordering between
+ *   intra-thread events, the counter of that thread is incremented.
+ * - Vector clocks are compared by comparing all counters of all threads.
+ * - When a thread synchronization action is performed that guarantees that
+ *   new actions of the current thread are executed after the actions of the
+ *   other thread, the vector clock of the synchronization object and the 
+ *   current thread are combined (by taking the component-wise maximum).
+ * - A vector clock is incremented during actions such as
+ *   pthread_create(), pthread_mutex_unlock(), sem_post(). (Actions where
+ *   an inter-thread ordering "arrow" starts).
+ */
 
 
 #include "pub_tool_basics.h"    // Addr, SizeT
 
 
+/** Vector clock element. */
 typedef struct
 {
-  ThreadId threadid;
-  UInt     count;
+  DrdThreadId threadid;
+  UInt        count;
 } VCElem;
 
 typedef struct
 {
-  unsigned capacity;
-  unsigned size;
-  VCElem*  vc;
+  unsigned capacity; /**< number of elements allocated for array vc. */
+  unsigned size;     /**< number of elements used of array vc. */
+  VCElem*  vc;       /**< vector clock elements. */
 } VectorClock;
 
 
-void vc_init(VectorClock* const vc,
-             const VCElem* const vcelem,
-             const unsigned size);
-void vc_cleanup(VectorClock* const vc);
-void vc_copy(VectorClock* const new,
-             const VectorClock* const rhs);
-void vc_assign(VectorClock* const lhs,
-               const VectorClock* const rhs);
-UInt vc_get(VectorClock* const vc, const ThreadId tid);
-void vc_increment(VectorClock* const vc, ThreadId const threadid);
+void DRD_(vc_init)(VectorClock* const vc,
+                   const VCElem* const vcelem,
+                   const unsigned size);
+void DRD_(vc_cleanup)(VectorClock* const vc);
+void DRD_(vc_copy)(VectorClock* const new, const VectorClock* const rhs);
+void DRD_(vc_assign)(VectorClock* const lhs, const VectorClock* const rhs);
+UInt DRD_(vc_get)(VectorClock* const vc, const DrdThreadId tid);
+void DRD_(vc_increment)(VectorClock* const vc, DrdThreadId const tid);
 static __inline__
-Bool vc_lte(const VectorClock* const vc1,
-            const VectorClock* const vc2);
-Bool vc_ordered(const VectorClock* const vc1,
-                const VectorClock* const vc2);
-void vc_min(VectorClock* const result,
-            const VectorClock* const rhs);
-void vc_combine(VectorClock* const result,
-                const VectorClock* const rhs);
-Bool vc_combine2(VectorClock* const result,
-                 const VectorClock* const rhs,
-                 const ThreadId tid);
-void vc_print(const VectorClock* const vc);
-void vc_snprint(Char* const str, Int const size,
-                const VectorClock* const vc);
-void vc_check(const VectorClock* const vc);
-void vc_test(void);
+Bool DRD_(vc_lte)(const VectorClock* const vc1,
+                  const VectorClock* const vc2);
+Bool DRD_(vc_ordered)(const VectorClock* const vc1,
+                      const VectorClock* const vc2);
+void DRD_(vc_min)(VectorClock* const result,
+                  const VectorClock* const rhs);
+void DRD_(vc_combine)(VectorClock* const result,
+                      const VectorClock* const rhs);
+Bool DRD_(vc_combine2)(VectorClock* const result,
+                       const VectorClock* const rhs,
+                       const DrdThreadId tid);
+void DRD_(vc_print)(const VectorClock* const vc);
+void DRD_(vc_snprint)(Char* const str, const Int size,
+                      const VectorClock* const vc);
+void DRD_(vc_check)(const VectorClock* const vc);
+void DRD_(vc_test)(void);
 
 
 
@@ -97,7 +99,7 @@ void vc_test(void);
  *    equal.
  */
 static __inline__
-Bool vc_lte(const VectorClock* const vc1, const VectorClock* const vc2)
+Bool DRD_(vc_lte)(const VectorClock* const vc1, const VectorClock* const vc2)
 {
   unsigned i;
   unsigned j = 0;