Added support for POSIX reader-writer locks. Modified exp-drd/tests/filter-stderr such that i386 and AMD64 now generate the same output. Removed *.stderr.exp2 files. Added section that explains differences between LinuxThreads and NPTL to exp-drd/docs/README.txt. Made error message about LinuxThreads more clear. Made error messages more uniform.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7531 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/exp-drd/drd_clientobj.h b/exp-drd/drd_clientobj.h
index 831d543..ffd13ca 100644
--- a/exp-drd/drd_clientobj.h
+++ b/exp-drd/drd_clientobj.h
@@ -45,6 +45,7 @@
ClientCondvar = 2,
ClientSemaphore = 3,
ClientBarrier = 4,
+ ClientRwlock = 5,
} ObjType;
struct any
@@ -96,12 +97,21 @@
Addr a2;
ObjType type;
void (*cleanup)(union drd_clientobj*);
- Word count; // Participant count in a barrier wait.
- Word pre_iteration; // pthread_barrier_wait() call count modulo two.
- Word post_iteration; // pthread_barrier_wait() call count modulo two.
- Word pre_waiters_left; // number of waiters left for a complete barrier.
- Word post_waiters_left; // number of waiters left for a complete barrier.
- OSet* oset; // Thread-specific barrier information.
+ Word count; // Participant count in a barrier wait.
+ Word pre_iteration; // pthread_barrier_wait() call count modulo two.
+ Word post_iteration; // pthread_barrier_wait() call count modulo two.
+ Word pre_waiters_left; // number of waiters left for a complete barrier.
+ Word post_waiters_left; // number of waiters left for a complete barrier.
+ OSet* oset; // Thread-specific barrier information.
+};
+
+struct rwlock_info
+{
+ Addr a1;
+ Addr a2;
+ ObjType type;
+ void (*cleanup)(union drd_clientobj*);
+ OSet* thread_info;
};
typedef union drd_clientobj
@@ -111,6 +121,7 @@
struct cond_info cond;
struct semaphore_info semaphore;
struct barrier_info barrier;
+ struct rwlock_info rwlock;
} DrdClientobj;