📄 apr_arch_proc_mutex.h
字号:
/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as * applicable. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */#ifndef PROC_MUTEX_H#define PROC_MUTEX_H#include "apr.h"#include "apr_private.h"#include "apr_general.h"#include "apr_lib.h"#include "apr_proc_mutex.h"#include "apr_pools.h"#include "apr_portable.h"#include "apr_file_io.h"#include "apr_arch_file_io.h"/* System headers required by Locks library */#if APR_HAVE_SYS_TYPES_H#include <sys/types.h>#endif#if APR_HAVE_STDIO_H#include <stdio.h>#endif#if APR_HAVE_FCNTL_H#include <fcntl.h>#endif#ifdef HAVE_SYS_IPC_H#include <sys/ipc.h>#endif#ifdef HAVE_SYS_SEM_H#include <sys/sem.h>#endif#ifdef HAVE_SYS_FILE_H#include <sys/file.h>#endif#if APR_HAVE_STDLIB_H#include <stdlib.h>#endif#if APR_HAVE_UNISTD_H#include <unistd.h>#endif#if APR_HAVE_STRING_H#include <string.h>#endif#ifdef HAVE_SYS_MMAN_H#include <sys/mman.h>#endif#if APR_HAVE_PTHREAD_H#include <pthread.h>#endif#if APR_HAVE_SEMAPHORE_H#include <semaphore.h>#endif/* End System Headers */struct apr_proc_mutex_unix_lock_methods_t { unsigned int flags; apr_status_t (*create)(apr_proc_mutex_t *, const char *); apr_status_t (*acquire)(apr_proc_mutex_t *); apr_status_t (*tryacquire)(apr_proc_mutex_t *); apr_status_t (*release)(apr_proc_mutex_t *); apr_status_t (*cleanup)(void *); 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;/* bit values for flags field in apr_unix_lock_methods_t */#define APR_PROCESS_LOCK_MECH_IS_GLOBAL 1#if !APR_HAVE_UNION_SEMUN && defined(APR_HAS_SYSVSEM_SERIALIZE)union semun { int val; struct semid_ds *buf; unsigned short *array;};#endifstruct apr_proc_mutex_t { apr_pool_t *pool; const apr_proc_mutex_unix_lock_methods_t *meth; const apr_proc_mutex_unix_lock_methods_t *inter_meth; int curr_locked; char *fname;#if APR_HAS_SYSVSEM_SERIALIZE || APR_HAS_FCNTL_SERIALIZE || APR_HAS_FLOCK_SERIALIZE apr_file_t *interproc;#endif#if APR_HAS_POSIXSEM_SERIALIZE sem_t *psem_interproc;#endif#if APR_HAS_PROC_PTHREAD_SERIALIZE pthread_mutex_t *pthread_interproc;#endif};void apr_proc_mutex_unix_setup_lock(void);#endif /* PROC_MUTEX_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -