Subject: mmap, siginfo
To: None <firstname.lastname@example.org>
From: John R Towler <email@example.com>
Date: 02/17/2002 16:30:00
Difficulties apparently are manifest in the OS facilities desired in
the new, experimental port of cmucl to NetBSD/x86. Wrt the comments
below, the facilities desired are
((a) the ability to map memory in chunks >= 128M
(b) a means to show that it is not necessarily inefficient)
(c) a siginfo structure which includes access to the address
of the page fault for SIGSEGV.
I looked a little in the the relevant include files and man pages, and
read a little in the suggested uvm papers. Is (a) possible? If not is that
because (b) can be shown? Wrt (c), a siginfo is mentioned as in
progress on the sigaction man page. I looked at the OpenBSD src
tree. There is a siginfo.h which defines such a struct. I suspect
that one might need a better sense of what is going on in the kernel
to correctly fill it. How does one start? I personally would like to
get rid of the presupposition that OS entails arch, which manifests
/* $CMUCL_TRUNK/src/lisp/NetBSD-os.c */
os_vm_address_t os_validate(os_vm_address_t addr, os_vm_size_t len)
int flags = MAP_PRIVATE | MAP_ANONYMOUS;
* NetBSD 1.5.2 seems to insist on each mmap being less than 128MB.
* So we mmap in 64MB steps. This is probably inefficient, but the
* missing CR2 reporting in signal handlers already ensures that
* NetBSD/x86 is not a suitable platform for CMU CL as it stands.
static void sigsegv_handler(HANDLER_ARGS)
* Since NetBSD on x86 currently provides no way to get the faulting
* memory address (i.e. the contents of the CR2 register), the page
* protection mechanism of the generational GC currently can't be
* used (see gengc.c), hence we don't neet to do anything here.
* See OpenBSD-os.c for details of what should be here, once NetBSD
* provides siginfo_t.
DPRINTF(0, (stderr, "sigsegv:\n"));
interrupt_handle_now(signal, code, context);