apr_arch_threadproc.h revision 272461
1/* Licensed to the Apache Software Foundation (ASF) under one or more 2 * contributor license agreements. See the NOTICE file distributed with 3 * this work for additional information regarding copyright ownership. 4 * The ASF licenses this file to You under the Apache License, Version 2.0 5 * (the "License"); you may not use this file except in compliance with 6 * the License. You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#include "apr.h" 18#include "apr_private.h" 19#include "apr_thread_proc.h" 20#include "apr_file_io.h" 21#include "apr_arch_file_io.h" 22 23/* System headers required for thread/process library */ 24#if APR_HAVE_PTHREAD_H 25#include <pthread.h> 26#endif 27#ifdef HAVE_SYS_RESOURCE_H 28#include <sys/resource.h> 29#endif 30#if APR_HAVE_SIGNAL_H 31#include <signal.h> 32#endif 33#if APR_HAVE_STRING_H 34#include <string.h> 35#endif 36#if APR_HAVE_SYS_WAIT_H 37#include <sys/wait.h> 38#endif 39#if APR_HAVE_STRING_H 40#include <string.h> 41#endif 42#ifdef HAVE_SCHED_H 43#include <sched.h> 44#endif 45/* End System Headers */ 46 47 48#ifndef THREAD_PROC_H 49#define THREAD_PROC_H 50 51#define SHELL_PATH "/bin/sh" 52 53#if APR_HAS_THREADS 54 55struct apr_thread_t { 56 apr_pool_t *pool; 57 pthread_t *td; 58 void *data; 59 apr_thread_start_t func; 60 apr_status_t exitval; 61}; 62 63struct apr_threadattr_t { 64 apr_pool_t *pool; 65 pthread_attr_t attr; 66}; 67 68struct apr_threadkey_t { 69 apr_pool_t *pool; 70 pthread_key_t key; 71}; 72 73struct apr_thread_once_t { 74 pthread_once_t once; 75}; 76 77#endif 78 79struct apr_procattr_t { 80 apr_pool_t *pool; 81 apr_file_t *parent_in; 82 apr_file_t *child_in; 83 apr_file_t *parent_out; 84 apr_file_t *child_out; 85 apr_file_t *parent_err; 86 apr_file_t *child_err; 87 char *currdir; 88 apr_int32_t cmdtype; 89 apr_int32_t detached; 90#ifdef RLIMIT_CPU 91 struct rlimit *limit_cpu; 92#endif 93#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined(RLIMIT_AS) 94 struct rlimit *limit_mem; 95#endif 96#ifdef RLIMIT_NPROC 97 struct rlimit *limit_nproc; 98#endif 99#ifdef RLIMIT_NOFILE 100 struct rlimit *limit_nofile; 101#endif 102 apr_child_errfn_t *errfn; 103 apr_int32_t errchk; 104 apr_uid_t uid; 105 apr_gid_t gid; 106}; 107 108#endif /* ! THREAD_PROC_H */ 109 110