1251875Speter/* Licensed to the Apache Software Foundation (ASF) under one or more 2251875Speter * contributor license agreements. See the NOTICE file distributed with 3251875Speter * this work for additional information regarding copyright ownership. 4251875Speter * The ASF licenses this file to You under the Apache License, Version 2.0 5251875Speter * (the "License"); you may not use this file except in compliance with 6251875Speter * the License. You may obtain a copy of the License at 7251875Speter * 8251875Speter * http://www.apache.org/licenses/LICENSE-2.0 9251875Speter * 10251875Speter * Unless required by applicable law or agreed to in writing, software 11251875Speter * distributed under the License is distributed on an "AS IS" BASIS, 12251875Speter * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13251875Speter * See the License for the specific language governing permissions and 14251875Speter * limitations under the License. 15251875Speter */ 16251875Speter 17251875Speter#include "apr.h" 18251875Speter#include "apr_private.h" 19251875Speter#include "apr_thread_proc.h" 20251875Speter#include "apr_file_io.h" 21251875Speter#include "apr_arch_file_io.h" 22251875Speter 23251875Speter/* System headers required for thread/process library */ 24251875Speter#if APR_HAVE_PTHREAD_H 25251875Speter#include <pthread.h> 26251875Speter#endif 27251875Speter#ifdef HAVE_SYS_RESOURCE_H 28251875Speter#include <sys/resource.h> 29251875Speter#endif 30251875Speter#if APR_HAVE_SIGNAL_H 31251875Speter#include <signal.h> 32251875Speter#endif 33251875Speter#if APR_HAVE_STRING_H 34251875Speter#include <string.h> 35251875Speter#endif 36251875Speter#if APR_HAVE_SYS_WAIT_H 37251875Speter#include <sys/wait.h> 38251875Speter#endif 39251875Speter#if APR_HAVE_STRING_H 40251875Speter#include <string.h> 41251875Speter#endif 42251875Speter#if HAVE_SCHED_H 43251875Speter#include <sched.h> 44251875Speter#endif 45251875Speter/* End System Headers */ 46251875Speter 47251875Speter 48251875Speter#ifndef THREAD_PROC_H 49251875Speter#define THREAD_PROC_H 50251875Speter 51251875Speter#define SHELL_PATH "/bin/sh" 52251875Speter 53251875Speter#if APR_HAS_THREADS 54251875Speter 55251875Speterstruct apr_thread_t { 56251875Speter apr_pool_t *pool; 57251875Speter pthread_t *td; 58251875Speter void *data; 59251875Speter apr_thread_start_t func; 60251875Speter apr_status_t exitval; 61251875Speter}; 62251875Speter 63251875Speterstruct apr_threadattr_t { 64251875Speter apr_pool_t *pool; 65251875Speter pthread_attr_t attr; 66251875Speter}; 67251875Speter 68251875Speterstruct apr_threadkey_t { 69251875Speter apr_pool_t *pool; 70251875Speter pthread_key_t key; 71251875Speter}; 72251875Speter 73251875Speterstruct apr_thread_once_t { 74251875Speter pthread_once_t once; 75251875Speter}; 76251875Speter 77251875Speter#endif 78251875Speter 79251875Speterstruct apr_procattr_t { 80251875Speter apr_pool_t *pool; 81251875Speter apr_file_t *parent_in; 82251875Speter apr_file_t *child_in; 83251875Speter apr_file_t *parent_out; 84251875Speter apr_file_t *child_out; 85251875Speter apr_file_t *parent_err; 86251875Speter apr_file_t *child_err; 87251875Speter char *currdir; 88251875Speter apr_int32_t cmdtype; 89251875Speter apr_int32_t detached; 90251875Speter#ifdef RLIMIT_CPU 91251875Speter struct rlimit *limit_cpu; 92251875Speter#endif 93251875Speter#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined(RLIMIT_AS) 94251875Speter struct rlimit *limit_mem; 95251875Speter#endif 96251875Speter#ifdef RLIMIT_NPROC 97251875Speter struct rlimit *limit_nproc; 98251875Speter#endif 99251875Speter#ifdef RLIMIT_NOFILE 100251875Speter struct rlimit *limit_nofile; 101251875Speter#endif 102251875Speter apr_child_errfn_t *errfn; 103251875Speter apr_int32_t errchk; 104251875Speter apr_uid_t uid; 105251875Speter apr_gid_t gid; 106251875Speter}; 107251875Speter 108251875Speter#endif /* ! THREAD_PROC_H */ 109251875Speter 110