summaryrefslogtreecommitdiff
path: root/Zend/zend_signal.h
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_signal.h')
-rw-r--r--Zend/zend_signal.h68
1 files changed, 41 insertions, 27 deletions
diff --git a/Zend/zend_signal.h b/Zend/zend_signal.h
index 0c32db52a3..f9662b8d94 100644
--- a/Zend/zend_signal.h
+++ b/Zend/zend_signal.h
@@ -23,9 +23,11 @@
#ifndef ZEND_SIGNAL_H
#define ZEND_SIGNAL_H
-#ifdef HAVE_SIGNAL_H
-#include <signal.h>
-#endif
+#ifdef ZEND_SIGNALS
+
+# ifdef HAVE_SIGNAL_H
+# include <signal.h>
+# endif
#ifndef NSIG
#define NSIG 65
@@ -63,39 +65,51 @@ typedef struct _zend_signal_globals_t {
zend_signal_queue_t pstorage[ZEND_SIGNAL_QUEUE_SIZE], *phead, *ptail, *pavail; /* pending queue */
} zend_signal_globals_t;
-#ifdef ZTS
-# define SIGG(v) ZEND_TSRMG(zend_signal_globals_id, zend_signal_globals_t *, v)
+# ifdef ZTS
+# define SIGG(v) ZEND_TSRMG(zend_signal_globals_id, zend_signal_globals_t *, v)
BEGIN_EXTERN_C()
ZEND_API extern int zend_signal_globals_id;
END_EXTERN_C()
-# define ZEND_SIGNAL_BLOCK_INTERRUPUTIONS() if (EXPECTED(zend_signal_globals_id)) { SIGG(depth)++; }
-# define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (EXPECTED(zend_signal_globals_id) && UNEXPECTED(((SIGG(depth)--) == SIGG(blocked)))) { zend_signal_handler_unblock(); }
-#else /* ZTS */
-# define SIGG(v) (zend_signal_globals.v)
-extern ZEND_API zend_signal_globals_t zend_signal_globals;
-# define ZEND_SIGNAL_BLOCK_INTERRUPUTIONS() SIGG(depth)++;
-# define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
-#endif /* not ZTS */
-
-# define SIGNAL_BEGIN_CRITICAL() sigset_t oldmask; \
- zend_sigprocmask(SIG_BLOCK, &global_sigmask, &oldmask);
-# define SIGNAL_END_CRITICAL() zend_sigprocmask(SIG_SETMASK, &oldmask, NULL);
-
-void zend_signal_handler_defer(int signo, siginfo_t *siginfo, void *context);
-ZEND_API void zend_signal_handler_unblock();
+# else
+# define SIGG(v) (zend_signal_globals.v)
+BEGIN_EXTERN_C()
+ZEND_API extern zend_signal_globals_t zend_signal_globals;
+END_EXTERN_C()
+# endif /* not ZTS */
+
+# ifdef ZTS
+# define ZEND_SIGNAL_BLOCK_INTERRUPTIONS() if (EXPECTED(zend_signal_globals_id)) { SIGG(depth)++; }
+# define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (EXPECTED(zend_signal_globals_id) && UNEXPECTED(((SIGG(depth)--) == SIGG(blocked)))) { zend_signal_handler_unblock(); }
+# else /* ZTS */
+# define ZEND_SIGNAL_BLOCK_INTERRUPTIONS() SIGG(depth)++;
+# define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (((SIGG(depth)--) == SIGG(blocked))) { zend_signal_handler_unblock(); }
+# endif /* not ZTS */
+
+ZEND_API void zend_signal_handler_unblock(void);
void zend_signal_activate(void);
void zend_signal_deactivate(void);
-void zend_signal_startup();
-void zend_signal_init();
+void zend_signal_startup(void);
+void zend_signal_init(void);
void zend_signal_shutdown(void);
+
ZEND_API int zend_signal(int signo, void (*handler)(int));
ZEND_API int zend_sigaction(int signo, const struct sigaction *act, struct sigaction *oldact);
-#ifdef ZTS
-#define zend_sigprocmask(signo, set, oldset) tsrm_sigmask((signo), (set), (oldset))
-#else
-#define zend_sigprocmask(signo, set, oldset) sigprocmask((signo), (set), (oldset))
-#endif
+#else /* ZEND_SIGNALS */
+
+# define ZEND_SIGNAL_BLOCK_INTERRUPTIONS()
+# define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS()
+
+# define zend_signal_activate()
+# define zend_signal_deactivate()
+# define zend_signal_startup()
+# define zend_signal_init()
+# define zend_signal_shutdown()
+
+# define zend_signal(signo, handler) signal(signo, handler)
+# define zend_sigaction(signo, act, oldact) sigaction(signo, act, oldact)
+
+#endif /* ZEND_SIGNALS */
#endif /* ZEND_SIGNAL_H */