diff options
author | Michael I. Bushnell <mib@gnu.org> | 1996-06-24 20:41:40 +0000 |
---|---|---|
committer | Michael I. Bushnell <mib@gnu.org> | 1996-06-24 20:41:40 +0000 |
commit | 65bd7b600ee9dd5b4c9a7d2777c330148508c5a6 (patch) | |
tree | e5d3bfaefb5f2dda292d33894a2d71963b1c93eb /libdiskfs | |
parent | 86917d47bf56eae9a002deedb2b57f8a095970f8 (diff) |
(disk_pager_setup):
Diffstat (limited to 'libdiskfs')
-rw-r--r-- | libdiskfs/disk-pager.c | 9 |
1 files changed, 8 insertions, 1 deletions
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); |