rbb 99/09/20 14:33:11
Modified: src/lib/apr/include apr_lock.h
src/lib/apr/locks/unix locks.c
src/lib/apr/test testthread.c
Log:
Allow APR locks to do more than just straight mutex. Only mutex is
implemented, but at least now we can add different kinds of locks later.
Revision Changes Path
1.3 +5 -2 apache-2.0/src/lib/apr/include/apr_lock.h
Index: apr_lock.h
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/include/apr_lock.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- apr_lock.h 1999/09/14 13:37:21 1.2
+++ apr_lock.h 1999/09/20 21:33:05 1.3
@@ -63,12 +63,15 @@
extern "C" {
#endif /* __cplusplus */
-typedef enum {APR_CROSS_PROCESS, APR_INTRAPROCESS, APR_LOCKALL} ap_locktype_e;
+typedef enum {APR_CROSS_PROCESS, APR_INTRAPROCESS, APR_LOCKALL} ap_lockscope_e;
+typedef enum {APR_MUTEX, APR_READWRITE} ap_locktype_e;
+
typedef struct lock_t ap_lock_t;
/* Function definitions */
-ap_status_t ap_create_lock(ap_context_t *, ap_locktype_e, char *, ap_lock_t **);
+ap_status_t ap_create_lock(ap_context_t *, ap_locktype_e, ap_lockscope_e,
+ char *, ap_lock_t **);
ap_status_t ap_lock(ap_lock_t *);
ap_status_t ap_unlock(ap_lock_t *);
ap_status_t ap_destroy_lock(ap_lock_t *);
1.4 +7 -2 apache-2.0/src/lib/apr/locks/unix/locks.c
Index: locks.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/locks/unix/locks.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- locks.c 1999/09/14 13:37:23 1.3
+++ locks.c 1999/09/20 21:33:07 1.4
@@ -76,7 +76,9 @@
* NOTE: APR_CROSS_PROCESS may lock both processes and threads, but it is
* only garaunteed to lock processes.
*/
-ap_status_t ap_create_lock(ap_context_t *cont, ap_locktype_e type, char *fname, struct
lock_t **lock)
+ap_status_t ap_create_lock(ap_context_t *cont, ap_locktype_e type,
+ ap_lockscope_e scope, char *fname,
+ struct lock_t **lock)
{
struct lock_t *new;
ap_status_t stat;
@@ -196,7 +198,8 @@
* ap_status_t ap_get_lockdata(ap_lock_t *, char *key, void *)
* Return the context associated with the current lock.
* arg 1) The currently open lock.
- * arg 2) The user data associated with the lock.
+ * arg 2) The key to use when retreiving data associated with this lock
+ * arg 3) The user data associated with the lock.
*/
ap_status_t ap_get_lockdata(struct lock_t *lock, char *key, void *data)
{
@@ -215,6 +218,8 @@
* Return the context associated with the current lock.
* arg 1) The currently open lock.
* arg 2) The user data to associate with the lock.
+ * arg 3) The key to use when associating data with this lock
+ * arg 4) The cleanup to use when the lock is destroyed.
*/
ap_status_t ap_set_lockdata(struct lock_t *lock, void *data, char *key,
ap_status_t (*cleanup) (void *))
1.3 +1 -1 apache-2.0/src/lib/apr/test/testthread.c
Index: testthread.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/test/testthread.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- testthread.c 1999/09/14 13:37:27 1.2
+++ testthread.c 1999/09/20 21:33:09 1.3
@@ -136,7 +136,7 @@
fprintf(stdout, "OK\n");
fprintf(stdout, "Initializing the lock.......");
- s1 = ap_create_lock(context, APR_INTRAPROCESS, "lock.file", &thread_lock);
+ s1 = ap_create_lock(context, APR_MUTEX, APR_INTRAPROCESS, "lock.file", &thread_lock);
if (s1 != APR_SUCCESS) {
fprintf(stderr, "Could not create lock\n");
exit(-1);
|