summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES6
-rw-r--r--include/apr_proc_mutex.h13
-rw-r--r--include/arch/unix/proc_mutex.h1
-rw-r--r--locks/beos/proc_mutex.c10
-rw-r--r--locks/netware/proc_mutex.c10
-rw-r--r--locks/os2/proc_mutex.c9
-rw-r--r--locks/unix/proc_mutex.c33
-rw-r--r--locks/win32/proc_mutex.c10
8 files changed, 87 insertions, 5 deletions
diff --git a/CHANGES b/CHANGES
index 0131b2272..49f08fc90 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,11 @@
Changes with APR b1
+ *) Added 2 additional lock functions: apr_proc_mutex_name and
+ apr_proc_mutex_defname which returns the type name of the mutex
+ (eg: "sysvsem") as well as the default mutex type (APR_LOCK_DEFAULT).
+ Mostly useful under Unix were the locktypes are selectable.
+ [Jim Jagielski]
+
*) Fixed apr_generate_random_bytes() for Win32 on Win NT or 9x by
dropping the 0x40 bit (CRYPT_SILENT) for earlier OS'es.
PR 9286 [William Rowe]
diff --git a/include/apr_proc_mutex.h b/include/apr_proc_mutex.h
index ea5225b5f..7bc843431 100644
--- a/include/apr_proc_mutex.h
+++ b/include/apr_proc_mutex.h
@@ -151,6 +151,19 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_unlock(apr_proc_mutex_t *mutex);
APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex);
/**
+ * Display the name of the mutex, as it relates to the actual method used.
+ * This matches the valid options for Apache's AcceptMutex directive
+ * @param mutex the name of the mutex
+ */
+APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex);
+
+/**
+ * Display the name of the default mutex: APR_LOCK_DEFAULT
+ * @param mutex the name of the default mutex
+ */
+APR_DECLARE(const char *) apr_proc_mutex_defname(void);
+
+/**
* Get the pool used by this proc_mutex.
* @return apr_pool_t the pool
*/
diff --git a/include/arch/unix/proc_mutex.h b/include/arch/unix/proc_mutex.h
index e55fdd59b..d7760a73e 100644
--- a/include/arch/unix/proc_mutex.h
+++ b/include/arch/unix/proc_mutex.h
@@ -113,6 +113,7 @@ struct apr_proc_mutex_unix_lock_methods_t {
apr_status_t (*release)(apr_proc_mutex_t *);
apr_status_t (*destroy)(apr_proc_mutex_t *);
apr_status_t (*child_init)(apr_proc_mutex_t **, apr_pool_t *, const char *);
+ const char *name;
};
typedef struct apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_lock_methods_t;
diff --git a/locks/beos/proc_mutex.c b/locks/beos/proc_mutex.c
index a5c68c867..455771424 100644
--- a/locks/beos/proc_mutex.c
+++ b/locks/beos/proc_mutex.c
@@ -157,6 +157,16 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex)
return stat;
}
+APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex)
+{
+ return "beossem";
+}
+
+APR_DECLARE(const char *) apr_proc_mutex_defname(void)
+{
+ return "beossem";
+}
+
APR_POOL_IMPLEMENT_ACCESSOR(proc_mutex)
/* Implement OS-specific accessors defined in apr_portable.h */
diff --git a/locks/netware/proc_mutex.c b/locks/netware/proc_mutex.c
index 113c875cd..e86802104 100644
--- a/locks/netware/proc_mutex.c
+++ b/locks/netware/proc_mutex.c
@@ -115,6 +115,16 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex)
return APR_ENOLOCK;
}
+APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex)
+{
+ return "netwarethread";
+}
+
+APR_DECLARE(const char *) apr_proc_mutex_defname(void)
+{
+ return "netwarethread";
+}
+
APR_POOL_IMPLEMENT_ACCESSOR(proc_mutex)
/* Implement OS-specific accessors defined in apr_portable.h */
diff --git a/locks/os2/proc_mutex.c b/locks/os2/proc_mutex.c
index 7cc329cc5..7338e466b 100644
--- a/locks/os2/proc_mutex.c
+++ b/locks/os2/proc_mutex.c
@@ -93,6 +93,15 @@ static apr_status_t proc_mutex_cleanup(void *vmutex)
return apr_proc_mutex_destroy(mutex);
}
+APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex)
+{
+ return "os2sem";
+}
+
+APR_DECLARE(const char *) apr_proc_mutex_defname(void)
+{
+ return "os2sem";
+}
APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex,
diff --git a/locks/unix/proc_mutex.c b/locks/unix/proc_mutex.c
index 3fa707cdf..e50499be7 100644
--- a/locks/unix/proc_mutex.c
+++ b/locks/unix/proc_mutex.c
@@ -177,7 +177,8 @@ const apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_posix_methods =
NULL, /* no tryacquire */
proc_mutex_posix_release,
proc_mutex_posix_destroy,
- proc_mutex_posix_child_init
+ proc_mutex_posix_child_init,
+ "posixsem"
};
#endif /* Posix sem implementation */
@@ -292,7 +293,8 @@ const apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_sysv_methods =
NULL, /* no tryacquire */
proc_mutex_sysv_release,
proc_mutex_sysv_destroy,
- proc_mutex_sysv_child_init
+ proc_mutex_sysv_child_init,
+ "sysvsem"
};
#endif /* SysV sem implementation */
@@ -466,7 +468,8 @@ const apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_proc_pthread_method
NULL, /* no tryacquire */
proc_mutex_proc_pthread_release,
proc_mutex_proc_pthread_destroy,
- proc_mutex_proc_pthread_child_init
+ proc_mutex_proc_pthread_child_init,
+ "pthread"
};
#endif
@@ -601,7 +604,8 @@ const apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_fcntl_methods =
NULL, /* no tryacquire */
proc_mutex_fcntl_release,
proc_mutex_fcntl_destroy,
- proc_mutex_fcntl_child_init
+ proc_mutex_fcntl_child_init,
+ "fcntl"
};
#endif /* fcntl implementation */
@@ -730,7 +734,8 @@ const apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_flock_methods =
NULL, /* no tryacquire */
proc_mutex_flock_release,
proc_mutex_flock_destroy,
- proc_mutex_flock_child_init
+ proc_mutex_flock_child_init,
+ "flock"
};
#endif /* flock implementation */
@@ -813,6 +818,19 @@ static apr_status_t proc_mutex_choose_method(apr_proc_mutex_t *new_mutex, apr_lo
return APR_SUCCESS;
}
+APR_DECLARE(const char *) apr_proc_mutex_defname(void)
+{
+ apr_status_t rv;
+ apr_proc_mutex_t mutex;
+
+ if ((rv = proc_mutex_choose_method(&mutex, APR_LOCK_DEFAULT)) != APR_SUCCESS) {
+ return "unknown";
+ }
+ mutex.meth = mutex.inter_meth;
+
+ return apr_proc_mutex_name(&mutex);
+}
+
static apr_status_t proc_mutex_create(apr_proc_mutex_t *new_mutex, apr_lockmech_e mech, const char *fname)
{
apr_status_t rv;
@@ -935,6 +953,11 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex)
return mutex->meth->destroy(mutex);
}
+APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex)
+{
+ return mutex->meth->name;
+}
+
APR_POOL_IMPLEMENT_ACCESSOR(proc_mutex)
/* Implement OS-specific accessors defined in apr_portable.h */
diff --git a/locks/win32/proc_mutex.c b/locks/win32/proc_mutex.c
index 92638211d..19100cdd0 100644
--- a/locks/win32/proc_mutex.c
+++ b/locks/win32/proc_mutex.c
@@ -176,6 +176,16 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex)
return stat;
}
+APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex)
+{
+ return "win32mutex";
+}
+
+APR_DECLARE(const char *) apr_proc_mutex_defname(void)
+{
+ return "win32mutex";
+}
+
APR_POOL_IMPLEMENT_ACCESSOR(proc_mutex)
/* Implement OS-specific accessors defined in apr_portable.h */