diff options
author | rpj <rpj> | 1999-09-15 00:56:21 +0000 |
---|---|---|
committer | rpj <rpj> | 1999-09-15 00:56:21 +0000 |
commit | 9031537658e89136c6a5bb959f9b9a4338a5d056 (patch) | |
tree | 0cb7c7695e5ac67fac829f1923a9238eea2f8efb /pthread.h | |
parent | ddce48cadf17ad0b75d6c57062106b700a73d738 (diff) |
Sat Sep 10 12:56:13 1999 Ross Johnson <rpj@swan.canberra.edu.au>
The following code for POSIX read/write locks was contributed
by Aurelio Medina.
* implement.h (pthread_rwlock_t_): Add.
* pthread.h (pthread_rwlock_t): Add.
(PTHREAD_RWLOCK_INITIALIZER): Add.
Add rwlock function prototypes.
* rwlock.c: New module.
* pthread.def: Add new rwlock functions.
* private.c (_pthread_processInitialize): initialise
_pthread_rwlock_test_init_lock critical section.
* global.c (_pthread_rwlock_test_init_lock): Add.
* mutex.c (pthread_mutex_destroy): Don't free mutex memory
if mutex is PTHREAD_MUTEX_INITIALIZER and has not been
initialised yet.
tests/ChangeLog
Sep 15 1999 Ross Johnson <rpj@ixobrychus.canberra.edu.au>
* rwlock1.c: New test.
* rwlock2.c: New test.
* rwlock3.c: New test.
* rwlock4.c: New test.
Diffstat (limited to 'pthread.h')
-rw-r--r-- | pthread.h | 34 |
1 files changed, 34 insertions, 0 deletions
@@ -122,6 +122,17 @@ * --------------------------- * pthread_sigmask * + * --------------------------- + * Read/Write Locks: + * --------------------------- + * pthread_rwlock_init + * pthread_rwlock_destroy + * pthread_rwlock_tryrdlock + * pthread_rwlock_trywrlock + * pthread_rwlock_rdlock + * pthread_rwlock_rwlock + * pthread_rwlock_unlock + * * Limitations * =========== * The following functions are not implemented: @@ -418,6 +429,8 @@ typedef struct pthread_mutex_t_ *pthread_mutex_t; typedef struct pthread_mutexattr_t_ *pthread_mutexattr_t; typedef struct pthread_cond_t_ *pthread_cond_t; typedef struct pthread_condattr_t_ *pthread_condattr_t; +typedef struct pthread_rwlock_t_ *pthread_rwlock_t; +typedef struct pthread_rwlockattr_t_ *pthread_rwlockattr_t; /* @@ -496,6 +509,8 @@ struct pthread_once_t_ #define PTHREAD_COND_INITIALIZER ((pthread_cond_t) -1) +#define PTHREAD_RWLOCK_INITIALIZER ((pthread_rwlock_t) -1) + /* * ==================== @@ -846,6 +861,25 @@ int pthread_attr_setschedparam (pthread_attr_t *attr, const struct sched_param *param); /* + * Read-Write Lock Functions + */ + +int pthread_rwlock_init(pthread_rwlock_t *lock, + const pthread_rwlockattr_t *attr); + +int pthread_rwlock_destroy(pthread_rwlock_t *lock); + +int pthread_rwlock_tryrdlock(pthread_rwlock_t *); + +int pthread_rwlock_trywrlock(pthread_rwlock_t *); + +int pthread_rwlock_rdlock(pthread_rwlock_t *lock); + +int pthread_rwlock_wrlock(pthread_rwlock_t *lock); + +int pthread_rwlock_unlock(pthread_rwlock_t *lock); + +/* * Protected Methods * * This function blocks until the given WIN32 handle |