From 65bd7b600ee9dd5b4c9a7d2777c330148508c5a6 Mon Sep 17 00:00:00 2001 From: "Michael I. Bushnell" Date: Mon, 24 Jun 1996 20:41:40 +0000 Subject: (disk_pager_setup): --- libdiskfs/disk-pager.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'libdiskfs/disk-pager.c') diff --git a/libdiskfs/disk-pager.c b/libdiskfs/disk-pager.c index 5446c7bf..9ae2a2a5 100644 --- a/libdiskfs/disk-pager.c +++ b/libdiskfs/disk-pager.c @@ -27,7 +27,11 @@ extern struct port_bucket *pager_bucket; static void fault_handler (int sig, long int sigcode, struct sigcontext *scp); static struct hurd_signal_preempter preempter = - { preempter: NULL, handler: (sighandler_t) &fault_handler, }; + { + signals: sigmask (SIGSEGV) | sigmask (SIGBUS), + preempter: NULL, + handler: (sighandler_t) &fault_handler, + }; /* A top-level function for the paging thread that just services paging @@ -92,6 +96,9 @@ fault_handler (int sig, long int sigcode, struct sigcontext *scp) assert (env && "unexpected fault on disk image"); + /* Clear the record, since the faulting thread will not. */ + cthread_set_data (cthread_self (), 0); + /* Fetch the error code from the pager. */ assert (scp->sc_error == EKERN_MEMORY_ERROR); err = pager_get_error (disk_pager, sigcode); -- cgit v1.2.3