vm: set stdin_loop cancellation state
Make it asynchronous so it doesn't wait till the next syscall to cancel.db4
parent
3fc82282f7
commit
c0a44000cc
|
@ -446,6 +446,10 @@ void *stdin_loop(void *arg)
|
||||||
sigdelset(&mask, SIGQUIT);
|
sigdelset(&mask, SIGQUIT);
|
||||||
pthread_sigmask(SIG_SETMASK, &mask, NULL);
|
pthread_sigmask(SIG_SETMASK, &mask, NULL);
|
||||||
|
|
||||||
|
int dontcare;
|
||||||
|
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &dontcare);
|
||||||
|
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &dontcare);
|
||||||
|
|
||||||
while(loop_running)
|
while(loop_running)
|
||||||
{
|
{
|
||||||
if(!safe_read(control_read,buf,1))
|
if(!safe_read(control_read,buf,1))
|
||||||
|
@ -505,7 +509,7 @@ void factor_vm::open_console()
|
||||||
void factor_vm::close_console()
|
void factor_vm::close_console()
|
||||||
{
|
{
|
||||||
if (stdin_thread_initialized_p)
|
if (stdin_thread_initialized_p)
|
||||||
pthread_kill(stdin_thread, SIGTERM);
|
pthread_cancel(stdin_thread);
|
||||||
}
|
}
|
||||||
|
|
||||||
void factor_vm::lock_console()
|
void factor_vm::lock_console()
|
||||||
|
|
Loading…
Reference in New Issue