23static zval ctrl_handler;
41 if (orig_interrupt_function) {
55 vm_interrupt_flag = &
EG(vm_interrupt);
69 orig_interrupt_function =
NULL;
70 vm_interrupt_flag =
NULL;
76 if (!vm_interrupt_flag) {
80 if (!tsrm_is_main_thread()) {
93static BOOL WINAPI php_win32_signal_system_ctrl_handler(
DWORD evt)
95 if (CTRL_C_EVENT != evt && CTRL_BREAK_EVENT != evt) {
99 zend_atomic_bool_store_ex(vm_interrupt_flag,
true);
120 if (!tsrm_is_main_thread()) {
134 if (!SetConsoleCtrlHandler(
NULL,
add)) {
140 if (!SetConsoleCtrlHandler(
NULL,
FALSE) || !SetConsoleCtrlHandler(php_win32_signal_system_ctrl_handler,
add)) {
169 ret = (GenerateConsoleCtrlEvent(evt, pid) != 0);
172 ret =
ret && SetConsoleCtrlHandler(php_win32_signal_system_ctrl_handler,
TRUE);
sapi_windows_generate_ctrl_event(int $event, int $pid=0)
sapi_windows_set_ctrl_handler(?callable $handler, bool $add=true)
PHP_WINUTIL_API BOOL php_win32_console_is_cli_sapi(void)
PHPAPI ZEND_COLD void php_error_docref(const char *docref, int type, const char *format,...)
PHP_WINUTIL_API void php_win32_signal_ctrl_handler_request_shutdown(void)
PHP_WINUTIL_API void php_win32_signal_ctrl_handler_init(void)
PHP_WINUTIL_API void php_win32_signal_ctrl_handler_shutdown(void)
ZEND_API ZEND_COLD void zend_throw_error(zend_class_entry *exception_ce, const char *format,...)
ZEND_API void(* zend_interrupt_function)(zend_execute_data *execute_data)
ZEND_API zend_result zend_parse_parameters(uint32_t num_args, const char *type_spec,...)
ZEND_API zend_string * zend_get_callable_name(zval *callable)
struct _zend_fcall_info_cache zend_fcall_info_cache
#define ZEND_FCI_INITIALIZED(fci)
struct _zend_fcall_info zend_fcall_info
#define call_user_function(function_table, object, function_name, retval_ptr, param_count, params)
struct zend_atomic_bool_s zend_atomic_bool
zend_string_release_ex(func->internal_function.function_name, 0)
#define REGISTER_MAIN_LONG_CONSTANT(name, lval, flags)
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)
struct _zend_string zend_string
struct _zend_execute_data zend_execute_data
ZEND_API void zval_ptr_dtor(zval *zval_ptr)