diff options
-rw-r--r-- | CHANGES | 6 | ||||
-rw-r--r-- | include/apr_proc_mutex.h | 13 | ||||
-rw-r--r-- | include/arch/unix/proc_mutex.h | 1 | ||||
-rw-r--r-- | locks/beos/proc_mutex.c | 10 | ||||
-rw-r--r-- | locks/netware/proc_mutex.c | 10 | ||||
-rw-r--r-- | locks/os2/proc_mutex.c | 9 | ||||
-rw-r--r-- | locks/unix/proc_mutex.c | 33 | ||||
-rw-r--r-- | locks/win32/proc_mutex.c | 10 |
8 files changed, 87 insertions, 5 deletions
@@ -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 */ |