diff options
Diffstat (limited to 'sapi/phpdbg/phpdbg_sigio_win32.c')
| -rw-r--r-- | sapi/phpdbg/phpdbg_sigio_win32.c | 117 | 
1 files changed, 0 insertions, 117 deletions
diff --git a/sapi/phpdbg/phpdbg_sigio_win32.c b/sapi/phpdbg/phpdbg_sigio_win32.c deleted file mode 100644 index 158e034872..0000000000 --- a/sapi/phpdbg/phpdbg_sigio_win32.c +++ /dev/null @@ -1,117 +0,0 @@ -/* -   +----------------------------------------------------------------------+ -   | PHP Version 5                                                        | -   +----------------------------------------------------------------------+ -   | Copyright (c) 7-4 The PHP Group                                      | -   +----------------------------------------------------------------------+ -   | This source file is subject to version 3.01 of the PHP license,      | -   | that is bundled with this package in the file LICENSE, and is        | -   | available through the world-wide-web at the following url:           | -   | http://www.php.net/license/3_01.txt                                  | -   | If you did not receive a copy of the PHP license and are unable to   | -   | obtain it through the world-wide-web, please send a note to          | -   | license@php.net so we can mail you a copy immediately.               | -   +----------------------------------------------------------------------+ -   | Authors: Anatol Belski <ab@php.net>                                  | -   +----------------------------------------------------------------------+ -*/ - - -#include <signal.h> - -#include "phpdbg.h" -#include "phpdbg_sigio_win32.h" - - -ZEND_EXTERN_MODULE_GLOBALS(phpdbg); - - -VOID -SigIoWatcherThread(VOID *p) -{ -	zend_uchar sig; -	struct win32_sigio_watcher_data *swd = (struct win32_sigio_watcher_data *)p; -#ifdef ZTS -	void ***tsrm_ls = swd->tsrm_ls; -#endif - -top: -	(void)phpdbg_consume_bytes(swd->fd, &sig, 1, -1 TSRMLS_CC); - - -	if (3 == sig) { -		/* XXX completely not sure it is done right here */ -		if (PHPDBG_G(flags) & PHPDBG_IS_INTERACTIVE) { -			if (raise(sig)) { -				goto top; -			} -		} -		if (PHPDBG_G(flags) & PHPDBG_IS_SIGNALED) { -			phpdbg_set_sigsafe_mem(&sig TSRMLS_CC); -			zend_try { -				phpdbg_force_interruption(TSRMLS_C); -			} zend_end_try(); -			phpdbg_clear_sigsafe_mem(TSRMLS_C); -			goto end; -		} -		if (!(PHPDBG_G(flags) & PHPDBG_IS_INTERACTIVE)) { -			PHPDBG_G(flags) |= PHPDBG_IS_SIGNALED; -		} -end: -		/* XXX set signaled flag to the caller thread, question is - whether it's needed */ -		ExitThread(sig); -	} else { -		goto top; -	} -} - - -/* Start this only for the time of the run or eval command, -for so long that the main thread is busy serving some debug -session. */ -void -sigio_watcher_start(void) -{ -	TSRMLS_FETCH(); - -	PHPDBG_G(swd).fd = PHPDBG_G(io)[PHPDBG_STDIN].fd; -#ifdef ZTS -	PHPDBG_G(swd).tsrm_ls = tsrm_ls; -#endif - -	PHPDBG_G(sigio_watcher_thread) = CreateThread( -		NULL, -		0, -		(LPTHREAD_START_ROUTINE)SigIoWatcherThread, -		&PHPDBG_G(swd), -		0, -		NULL); -} - -void -sigio_watcher_stop(void) -{ -	DWORD waited; -	TSRMLS_FETCH(); - -	if (INVALID_HANDLE_VALUE == PHPDBG_G(sigio_watcher_thread)) { -		/* it probably did bail out already */ -		return; -	} - -	waited = WaitForSingleObject(PHPDBG_G(sigio_watcher_thread), 300); - -	if (WAIT_OBJECT_0 != waited) { -		if (!CancelSynchronousIo(PHPDBG_G(sigio_watcher_thread))) { -			/* error out */ -		} - -		if (!TerminateThread(PHPDBG_G(sigio_watcher_thread), 0)) { -			/* error out */ -		} -	} - -	PHPDBG_G(swd).fd = -1; -	PHPDBG_G(sigio_watcher_thread) = INVALID_HANDLE_VALUE; -} -  | 
