summaryrefslogtreecommitdiff
path: root/pthread.h
diff options
context:
space:
mode:
authorrpj <rpj>1999-09-15 00:56:21 +0000
committerrpj <rpj>1999-09-15 00:56:21 +0000
commit9031537658e89136c6a5bb959f9b9a4338a5d056 (patch)
tree0cb7c7695e5ac67fac829f1923a9238eea2f8efb /pthread.h
parentddce48cadf17ad0b75d6c57062106b700a73d738 (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.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/pthread.h b/pthread.h
index af982b3..ebf9854 100644
--- a/pthread.h
+++ b/pthread.h
@@ -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