diff options
author | unknown <bell@88-214-96-46.dialup.umc.net.ua> | 2008-02-22 22:32:34 +0200 |
---|---|---|
committer | unknown <bell@88-214-96-46.dialup.umc.net.ua> | 2008-02-22 22:32:34 +0200 |
commit | 190de95f6fcf37572be7cf2ff0543d74d190a989 (patch) | |
tree | 0ccc2ad2a6bfe277f9795c8e8a468213842a80a1 /include | |
parent | 3aaa0f60cdc0f1c63221ae7ac6e0ce2f11a175cb (diff) | |
download | mariadb-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.h | 4 | ||||
-rw-r--r-- | include/wqueue.h | 1 |
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 |