summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrbb <rbb@13f79535-47bb-0310-9956-ffa450edef68>2002-05-02 00:52:01 +0000
committerrbb <rbb@13f79535-47bb-0310-9956-ffa450edef68>2002-05-02 00:52:01 +0000
commit59f9e4498e3c28943953e27a014f1f9a50b48ec7 (patch)
tree2d3fcc46c4db4896dc7ed283c5111f7cef740e41
parent75a20fea1135b266deaf66e29b1703d100252f07 (diff)
downloadlibapr-59f9e4498e3c28943953e27a014f1f9a50b48ec7.tar.gz
Add apr_os_get function for global_mutexes.
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@63346 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--include/apr_portable.h19
-rw-r--r--locks/unix/global_mutex.c12
2 files changed, 31 insertions, 0 deletions
diff --git a/include/apr_portable.h b/include/apr_portable.h
index 35648dc06..9252f4d2b 100644
--- a/include/apr_portable.h
+++ b/include/apr_portable.h
@@ -74,6 +74,7 @@
#include "apr_file_io.h"
#include "apr_network_io.h"
#include "apr_errno.h"
+#include "apr_global_mutex.h"
#include "apr_proc_mutex.h"
#include "apr_time.h"
#include "apr_dso.h"
@@ -217,6 +218,24 @@ struct apr_os_sock_info_t {
typedef struct apr_os_sock_info_t apr_os_sock_info_t;
+#if APR_PROCESS_LOCK_IS_GLOBAL
+#define apr_os_global_mutex_t apr_os_proc_mutex_t
+#define apr_os_global_mutex_get apr_os_proc_mutex_get
+#else
+ struct apr_os_global_mutex_t {
+ apr_pool_t *pool;
+ apr_proc_mutex_t *proc_mutex;
+#if APR_HAS_THREADS
+ apr_thread_mutex_t *thread_mutex;
+#endif /* APR_HAS_THREADS */
+ };
+ typedef struct apr_os_global_mutex_t apr_os_global_mutex_t;
+
+APR_DECLARE(apr_status_t) apr_os_global_mutex_get(apr_os_global_mutex_t *ospmutex,
+ apr_global_mutex_t *pmutex);
+#endif
+
+
/**
* convert the file from apr type to os specific type.
* @param thefile The os specific file we are converting to
diff --git a/locks/unix/global_mutex.c b/locks/unix/global_mutex.c
index 15fab9481..763d0b0b5 100644
--- a/locks/unix/global_mutex.c
+++ b/locks/unix/global_mutex.c
@@ -57,6 +57,7 @@
#include "global_mutex.h"
#include "apr_proc_mutex.h"
#include "apr_thread_mutex.h"
+#include "apr_portable.h"
static apr_status_t global_mutex_cleanup(void *data)
{
@@ -178,6 +179,17 @@ APR_DECLARE(apr_status_t) apr_global_mutex_unlock(apr_global_mutex_t *mutex)
return APR_SUCCESS;
}
+APR_DECLARE(apr_status_t) apr_os_global_mutex_get(apr_os_global_mutex_t *ospmutex,
+ apr_global_mutex_t *pmutex)
+{
+ ospmutex->pool = pmutex->pool;
+ ospmutex->proc_mutex = pmutex->proc_mutex;
+#if APR_HAS_THREADS
+ ospmutex->thread_mutex = pmutex->thread_mutex;
+#endif
+ return APR_SUCCESS;
+}
+
APR_DECLARE(apr_status_t) apr_global_mutex_destroy(apr_global_mutex_t *mutex)
{
return apr_pool_cleanup_run(mutex->pool, mutex, global_mutex_cleanup);