xref: /PHP-7.4/ext/pcntl/php_pcntl.h (revision f1b306fe)
1 /*
2    +----------------------------------------------------------------------+
3    | PHP Version 7                                                        |
4    +----------------------------------------------------------------------+
5    | Copyright (c) The PHP Group                                          |
6    +----------------------------------------------------------------------+
7    | This source file is subject to version 3.01 of the PHP license,      |
8    | that is bundled with this package in the file LICENSE, and is        |
9    | available through the world-wide-web at the following url:           |
10    | http://www.php.net/license/3_01.txt                                  |
11    | If you did not receive a copy of the PHP license and are unable to   |
12    | obtain it through the world-wide-web, please send a note to          |
13    | license@php.net so we can mail you a copy immediately.               |
14    +----------------------------------------------------------------------+
15    | Author: Jason Greene <jason@inetgurus.net>                           |
16    +----------------------------------------------------------------------+
17  */
18 
19 #ifndef PHP_PCNTL_H
20 #define PHP_PCNTL_H
21 
22 #if defined(WCONTINUED) && defined(WIFCONTINUED)
23 #define HAVE_WCONTINUED 1
24 #endif
25 
26 extern zend_module_entry pcntl_module_entry;
27 #define phpext_pcntl_ptr &pcntl_module_entry
28 
29 #include "php_version.h"
30 #define PHP_PCNTL_VERSION PHP_VERSION
31 
32 PHP_MINIT_FUNCTION(pcntl);
33 PHP_MSHUTDOWN_FUNCTION(pcntl);
34 PHP_RINIT_FUNCTION(pcntl);
35 PHP_RSHUTDOWN_FUNCTION(pcntl);
36 PHP_MINFO_FUNCTION(pcntl);
37 
38 PHP_FUNCTION(pcntl_alarm);
39 PHP_FUNCTION(pcntl_fork);
40 PHP_FUNCTION(pcntl_waitpid);
41 PHP_FUNCTION(pcntl_wait);
42 PHP_FUNCTION(pcntl_wifexited);
43 PHP_FUNCTION(pcntl_wifstopped);
44 PHP_FUNCTION(pcntl_wifsignaled);
45 #ifdef HAVE_WCONTINUED
46 PHP_FUNCTION(pcntl_wifcontinued);
47 #endif
48 PHP_FUNCTION(pcntl_wexitstatus);
49 PHP_FUNCTION(pcntl_wtermsig);
50 PHP_FUNCTION(pcntl_wstopsig);
51 PHP_FUNCTION(pcntl_signal);
52 PHP_FUNCTION(pcntl_signal_get_handler);
53 PHP_FUNCTION(pcntl_signal_dispatch);
54 PHP_FUNCTION(pcntl_get_last_error);
55 PHP_FUNCTION(pcntl_strerror);
56 #ifdef HAVE_SIGPROCMASK
57 PHP_FUNCTION(pcntl_sigprocmask);
58 #endif
59 #ifdef HAVE_STRUCT_SIGINFO_T
60 # if HAVE_SIGWAITINFO && HAVE_SIGTIMEDWAIT
61 PHP_FUNCTION(pcntl_sigwaitinfo);
62 PHP_FUNCTION(pcntl_sigtimedwait);
63 # endif
64 #endif
65 PHP_FUNCTION(pcntl_exec);
66 #ifdef HAVE_GETPRIORITY
67 PHP_FUNCTION(pcntl_getpriority);
68 #endif
69 #ifdef HAVE_SETPRIORITY
70 PHP_FUNCTION(pcntl_setpriority);
71 #endif
72 PHP_FUNCTION(pcntl_async_signals);
73 #ifdef HAVE_UNSHARE
74 PHP_FUNCTION(pcntl_unshare);
75 #endif
76 
77 struct php_pcntl_pending_signal {
78 	struct php_pcntl_pending_signal *next;
79 	zend_long signo;
80 #ifdef HAVE_STRUCT_SIGINFO_T
81 	siginfo_t siginfo;
82 #endif
83 };
84 
85 ZEND_BEGIN_MODULE_GLOBALS(pcntl)
86 	HashTable php_signal_table;
87 	int processing_signal_queue;
88 	struct php_pcntl_pending_signal *head, *tail, *spares;
89 	int last_error;
90 	volatile char pending_signals;
91 	zend_bool async_signals;
92 ZEND_END_MODULE_GLOBALS(pcntl)
93 
94 #if defined(ZTS) && defined(COMPILE_DL_PCNTL)
95 ZEND_TSRMLS_CACHE_EXTERN()
96 #endif
97 
98 ZEND_EXTERN_MODULE_GLOBALS(pcntl)
99 #define PCNTL_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(pcntl, v)
100 
101 #define REGISTER_PCNTL_ERRNO_CONSTANT(name) REGISTER_LONG_CONSTANT("PCNTL_" #name, name, CONST_CS | CONST_PERSISTENT)
102 
103 #endif	/* PHP_PCNTL_H */
104