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#ifndef APR_SIGNAL_H 18251875Speter#define APR_SIGNAL_H 19251875Speter 20251875Speter/** 21251875Speter * @file apr_signal.h 22251875Speter * @brief APR Signal Handling 23251875Speter */ 24251875Speter 25251875Speter#include "apr.h" 26251875Speter#include "apr_pools.h" 27251875Speter 28251875Speter#if APR_HAVE_SIGNAL_H 29251875Speter#include <signal.h> 30251875Speter#endif 31251875Speter 32251875Speter#ifdef __cplusplus 33251875Speterextern "C" { 34251875Speter#endif /* __cplusplus */ 35251875Speter 36251875Speter/** 37251875Speter * @defgroup apr_signal Signal Handling 38251875Speter * @ingroup APR 39251875Speter * @{ 40251875Speter */ 41251875Speter 42251875Speter#if APR_HAVE_SIGACTION || defined(DOXYGEN) 43251875Speter 44251875Speter#if defined(DARWIN) && !defined(__cplusplus) && !defined(_ANSI_SOURCE) 45251875Speter/* work around Darwin header file bugs 46251875Speter * http://www.opensource.apple.com/bugs/X/BSD%20Kernel/2657228.html 47251875Speter */ 48251875Speter#undef SIG_DFL 49251875Speter#undef SIG_IGN 50251875Speter#undef SIG_ERR 51251875Speter#define SIG_DFL (void (*)(int))0 52251875Speter#define SIG_IGN (void (*)(int))1 53251875Speter#define SIG_ERR (void (*)(int))-1 54251875Speter#endif 55251875Speter 56251875Speter/** Function prototype for signal handlers */ 57251875Spetertypedef void apr_sigfunc_t(int); 58251875Speter 59251875Speter/** 60251875Speter * Set the signal handler function for a given signal 61251875Speter * @param signo The signal (eg... SIGWINCH) 62251875Speter * @param func the function to get called 63251875Speter */ 64251875SpeterAPR_DECLARE(apr_sigfunc_t *) apr_signal(int signo, apr_sigfunc_t * func); 65251875Speter 66251875Speter#if defined(SIG_IGN) && !defined(SIG_ERR) 67251875Speter#define SIG_ERR ((apr_sigfunc_t *) -1) 68251875Speter#endif 69251875Speter 70251875Speter#else /* !APR_HAVE_SIGACTION */ 71251875Speter#define apr_signal(a, b) signal(a, b) 72251875Speter#endif 73251875Speter 74251875Speter 75251875Speter/** 76251875Speter * Get the description for a specific signal number 77251875Speter * @param signum The signal number 78251875Speter * @return The description of the signal 79251875Speter */ 80251875SpeterAPR_DECLARE(const char *) apr_signal_description_get(int signum); 81251875Speter 82251875Speter/** 83251875Speter * APR-private function for initializing the signal package 84251875Speter * @internal 85251875Speter * @param pglobal The internal, global pool 86251875Speter */ 87251875Spetervoid apr_signal_init(apr_pool_t *pglobal); 88251875Speter 89251875Speter/** 90251875Speter * Block the delivery of a particular signal 91251875Speter * @param signum The signal number 92251875Speter * @return status 93251875Speter */ 94251875SpeterAPR_DECLARE(apr_status_t) apr_signal_block(int signum); 95251875Speter 96251875Speter/** 97251875Speter * Enable the delivery of a particular signal 98251875Speter * @param signum The signal number 99251875Speter * @return status 100251875Speter */ 101251875SpeterAPR_DECLARE(apr_status_t) apr_signal_unblock(int signum); 102251875Speter 103251875Speter/** @} */ 104251875Speter 105251875Speter#ifdef __cplusplus 106251875Speter} 107251875Speter#endif /* __cplusplus */ 108251875Speter 109251875Speter#endif /* APR_SIGNAL_H */ 110