vx32

Local 9vx git repository for patches.
git clone git://r-36.net/vx32
Log | Files | Refs

commit 11ae6de94d664cb94d39a00e98031e1c5e134c21
parent 7414e9996dc38431669b1da77013891e3f8940d6
Author: Russ Cox <rsc@swtch.com>
Date:   Sat, 28 Jun 2008 11:40:50 -0400

9vx/OSX: must wait until after fork to install sigaltstack

Diffstat:
src/9vx/main.c | 25+++++++++++++++++++------
1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/9vx/main.c b/src/9vx/main.c @@ -48,6 +48,8 @@ extern int tracekdev; static int singlethread; static void bootinit(void); +static void siginit(void); + static char* getuser(void); static char* findroot(void); @@ -154,6 +156,12 @@ main(int argc, char **argv) _exit(0); /* + * Have to do this after fork; on OS X child does + * not inherit sigaltstack. + */ + siginit(); + + /* * Debugging: tell user what options we guessed. */ print("9vx %s-r %s -u %s\n", usetty ? "-t " : "", localroot, username); @@ -642,12 +650,21 @@ setsigsegv(int vx32) void mach0init(void) { - struct sigaction act; - #ifndef TLS machkeyinit(); #endif + conf.nmach = 1; + machinit(); /* common per-processor init */ + active.machs = 1; + active.exiting = 0; +} + +static void +siginit(void) +{ + struct sigaction act; + /* Install vx32signal handlers ... */ vx32_siginit(); @@ -660,10 +677,6 @@ mach0init(void) sigaction(SIGUSR1, &act, nil); sigaction(SIGURG, &act, nil); - conf.nmach = 1; - machinit(); /* common per-processor init */ - active.machs = 1; - active.exiting = 0; } void