Viewing file: 20040708-1.c (1.79 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* PR rtl-optimization/16199 */ /* Origin: Olaf Klein <oklein@smallo.ruhr.de> */
typedef enum { APR_LOCK_FCNTL, APR_LOCK_FLOCK, APR_LOCK_SYSVSEM, APR_LOCK_PROC_PTHREAD, APR_LOCK_POSIXSEM, APR_LOCK_DEFAULT } apr_lockmech_e;
struct apr_proc_mutex_unix_lock_methods_t { unsigned int flags; const char *name; };
typedef struct apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_lock_methods_t;
extern const apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_sysv_methods;
struct apr_proc_mutex_t { const apr_proc_mutex_unix_lock_methods_t *inter_meth; int curr_locked; char *fname; };
typedef struct apr_proc_mutex_t apr_proc_mutex_t;
extern const apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_proc_pthread_methods;
extern const apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_fcntl_methods;
static int proc_mutex_choose_method(apr_proc_mutex_t *new_mutex, apr_lockmech_e mech) { switch (mech) { case APR_LOCK_FCNTL: new_mutex->inter_meth = &apr_proc_mutex_unix_fcntl_methods; break; case APR_LOCK_FLOCK: return ((20000 + 50000) + 23); break; case APR_LOCK_SYSVSEM: new_mutex->inter_meth = &apr_proc_mutex_unix_sysv_methods; break; case APR_LOCK_POSIXSEM: return ((20000 + 50000) + 23); break; case APR_LOCK_PROC_PTHREAD: new_mutex->inter_meth = &apr_proc_mutex_unix_proc_pthread_methods; break; case APR_LOCK_DEFAULT: new_mutex->inter_meth = &apr_proc_mutex_unix_proc_pthread_methods; break; default: return ((20000 + 50000) + 23); } return 0; }
const char* apr_proc_mutex_defname(void) { apr_proc_mutex_t mutex;
if (proc_mutex_choose_method(&mutex, APR_LOCK_DEFAULT) != 0) { return "unknown"; } }
|