From 39735504838ba5732ee7d217ef599a2ff12b845c Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Wed, 5 Nov 2008 11:23:33 +0000 Subject: [PATCH] Fix and tweak rwlock_test git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/branches/Branch-2.4@7978 91ce42f0-d328-0410-95d8-f526ca767f89 --- bacula/src/lib/rwlock.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/bacula/src/lib/rwlock.c b/bacula/src/lib/rwlock.c index 561a80e734..a9020abe94 100644 --- a/bacula/src/lib/rwlock.c +++ b/bacula/src/lib/rwlock.c @@ -318,7 +318,7 @@ int rwl_writeunlock(brwlock_t *rwl) #ifdef TEST_RWLOCK -#define THREADS 80 +#define THREADS 200 #define DATASIZE 15 #define ITERATIONS 1000000 @@ -362,7 +362,18 @@ void *thread_routine(void *arg) * update operation (write lock instead of read * lock). */ + if (self->interval <= 0) { + self->interval = 1; + } if ((iteration % self->interval) == 0) { + status = rwl_writelock(&data[element].lock); + if (status != 0) { + berrno be; + Emsg1(M_ABORT, 0, _("Write lock failed. ERR=%s\n"), be.bstrerror(status)); + } + data[element].data = self->thread_num; + data[element].writes++; + self->writes++; status = rwl_writelock(&data[element].lock); if (status != 0) { berrno be; @@ -376,6 +387,12 @@ void *thread_routine(void *arg) berrno be; Emsg1(M_ABORT, 0, _("Write unlock failed. ERR=%s\n"), be.bstrerror(status)); } + status = rwl_writeunlock(&data[element].lock); + if (status != 0) { + berrno be; + Emsg1(M_ABORT, 0, _("Write unlock failed. ERR=%s\n"), be.bstrerror(status)); + } + } else { /* * Look at the current data element to see whether -- 2.39.5