summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorunknown <bell@88-214-96-46.dialup.umc.net.ua>2008-02-22 22:32:34 +0200
committerunknown <bell@88-214-96-46.dialup.umc.net.ua>2008-02-22 22:32:34 +0200
commit190de95f6fcf37572be7cf2ff0543d74d190a989 (patch)
tree0ccc2ad2a6bfe277f9795c8e8a468213842a80a1 /include
parent3aaa0f60cdc0f1c63221ae7ac6e0ce2f11a175cb (diff)
downloadmariadb-git-190de95f6fcf37572be7cf2ff0543d74d190a989.tar.gz
Locking for read and write made waiting for each other (with loose
scheme for the same thread locking). include/my_pthread.h: Added variable for lock diffirentiation. include/wqueue.h: New release call. mysys/wqueue.c: New release call in case of read/write lock. storage/maria/ma_pagecache.c: Locking for read and write made waitimg for each other. storage/maria/unittest/Makefile.am: New test added. storage/maria/unittest/ma_pagecache_consist.c: Fixed thread initialization in the test. storage/maria/unittest/ma_pagecache_rwconsist.c: New BitKeeper file ``storage/maria/unittest/ma_pagecache_rwconsist.c''
Diffstat (limited to 'include')
-rw-r--r--include/my_pthread.h4
-rw-r--r--include/wqueue.h1
2 files changed, 5 insertions, 0 deletions
diff --git a/include/my_pthread.h b/include/my_pthread.h
index 093cd9c000e..1841d91d8c5 100644
--- a/include/my_pthread.h
+++ b/include/my_pthread.h
@@ -674,6 +674,9 @@ extern int pthread_dummy(int);
#endif
#endif
+#define MY_PTHREAD_LOCK_READ 0
+#define MY_PTHREAD_LOCK_WRITE 1
+
struct st_my_thread_var
{
int thr_errno;
@@ -688,6 +691,7 @@ struct st_my_thread_var
my_bool init;
struct st_my_thread_var *next,**prev;
void *opt_info;
+ uint lock_type; /* used by conditional release the queue */
#ifndef DBUG_OFF
void *dbug;
char name[THREAD_NAME_SIZE+1];
diff --git a/include/wqueue.h b/include/wqueue.h
index bacabb8c401..658f3d66f12 100644
--- a/include/wqueue.h
+++ b/include/wqueue.h
@@ -20,6 +20,7 @@ void wqueue_add_and_wait(WQUEUE *wqueue,
struct st_my_thread_var *thread,
pthread_mutex_t *lock);
void wqueue_release_queue(WQUEUE *wqueue);
+void wqueue_release_one_locktype_from_queue(WQUEUE *wqueue);
#endif