diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-11-30 14:56:00 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-11-30 14:56:00 +0100 |
commit | 7f3659e78f83a59badebeae6414b9b3cd89d7a58 (patch) | |
tree | f7d3b4c1efbc4e8ecc14ee6201563db3152012a2 /sys/src/9/ppc | |
parent | 254031cf7020f1b185c6d0af89c653a271e0ed01 (diff) |
kernel: cleanup exit()/shutdown()/reboot() code
introduce cpushutdown() function that does the common
operation of initiating shutdown, returning once all
cpu's got the message and are about to shutdown. this
avoids duplicated code which isnt really machine specific.
automatic reboot on panic only when *debug= is not set
and the machine is a cpu server or has no display,
otherwise just hang.
Diffstat (limited to 'sys/src/9/ppc')
-rw-r--r-- | sys/src/9/ppc/dat.h | 1 | ||||
-rw-r--r-- | sys/src/9/ppc/main.c | 36 |
2 files changed, 3 insertions, 34 deletions
diff --git a/sys/src/9/ppc/dat.h b/sys/src/9/ppc/dat.h index f92367764..d10559f01 100644 --- a/sys/src/9/ppc/dat.h +++ b/sys/src/9/ppc/dat.h @@ -191,7 +191,6 @@ struct Lock; short machs; short exiting; - short ispanic; }active; /* diff --git a/sys/src/9/ppc/main.c b/sys/src/9/ppc/main.c index e0badeb57..5d2a1765b 100644 --- a/sys/src/9/ppc/main.c +++ b/sys/src/9/ppc/main.c @@ -243,38 +243,10 @@ userinit(void) } void -exit(int ispanic) +exit(int) { - int ms, once; - - lock(&active); - if(ispanic) - active.ispanic = ispanic; - else if(m->machno == 0 && (active.machs & (1<<m->machno)) == 0) - active.ispanic = 0; - once = active.machs & (1<<m->machno); - active.machs &= ~(1<<m->machno); - active.exiting = 1; - unlock(&active); - - if(once) - print("cpu%d: exiting\n", m->machno); - spllo(); - for(ms = 5*1000; ms > 0; ms -= TK2MS(2)){ - delay(TK2MS(2)); - if(active.machs == 0 && consactive() == 0) - break; - } - - if(active.ispanic && m->machno == 0){ - if(cpuserver) - delay(10000); - else if(conf.monitor) - for(;;); - } - else - delay(1000); - + cpushutdown(); + for(;;) idlehands(); } /* @@ -424,8 +396,6 @@ confinit(void) */ imagmem->maxsize = kpages; } - -// conf.monitor = 1; /* BUG */ } static int |