From 233ef630d475df99b76788134384e397a04ad552 Mon Sep 17 00:00:00 2001 From: Jim Date: Tue, 24 Jul 2012 15:41:56 -0400 Subject: [PATCH] Don't install signals with dedicated registers --- devpnc.h | 5 +++++ em.c | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/devpnc.h b/devpnc.h index cba933f..2e85642 100644 --- a/devpnc.h +++ b/devpnc.h @@ -991,10 +991,15 @@ int devpnc (int class, int func, int device) { } TRACE(T_RIO, "PNC configured\n"); devpoll[device] = PNCPOLL*gvp->instpermsec; + + /* can't use signals with NOREGS, so PNC I/O is very slow */ + +#ifdef NOREGS if (signal(SIGIO, pnchavedata) == SIG_ERR) { perror("installing SIGIO handler"); fatal(NULL); } +#endif if (gettimeofday(&tv0, NULL) != 0) fatal("pnc gettimeofday 1 failed"); tv0ts = tv0.tv_sec + tv0.tv_usec/1000000.0; diff --git a/em.c b/em.c index 984b56a..c03f295 100644 --- a/em.c +++ b/em.c @@ -6747,8 +6747,9 @@ d_bdx: /* 0140734 */ if (delayusec > 1000) { if (gettimeofday(&tv0, NULL) != 0) fatal("em: gettimeofday 0 failed"); - - /* NOTE: on OSX, a signal (sigio for pnc) will interrupt usleep */ + + /* for some reason, the SIGTERM signal handler gets reset + during emulator initialization; this re-installs it */ { static int firsttime=1; @@ -6757,6 +6758,9 @@ d_bdx: /* 0140734 */ firsttime = 0; } } + + /* NOTE: on OSX, a signal (sigio for pnc) will interrupt usleep */ + usleep(delayusec); if (gettimeofday(&tv1, NULL) != 0) fatal("em: gettimeofday 1 failed");