diff options
| author | John Dyson <dyson@FreeBSD.org> | 1997-12-12 04:00:59 +0000 |
|---|---|---|
| committer | John Dyson <dyson@FreeBSD.org> | 1997-12-12 04:00:59 +0000 |
| commit | 74b2192ae6309fcbe617ed63389125ff0c152af2 (patch) | |
| tree | f22967b4ad8e929fdab55160590d1e3d3f12807f /sys/kern/init_main.c | |
| parent | ba9d19e99b83daaf5ed80c79f915ac179726d150 (diff) | |
Notes
Diffstat (limited to 'sys/kern/init_main.c')
| -rw-r--r-- | sys/kern/init_main.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c index e56531eba624..d4ea42bf7592 100644 --- a/sys/kern/init_main.c +++ b/sys/kern/init_main.c @@ -39,7 +39,7 @@ * SUCH DAMAGE. * * @(#)init_main.c 8.9 (Berkeley) 1/21/94 - * $Id: init_main.c,v 1.76 1997/11/25 07:07:41 julian Exp $ + * $Id: init_main.c,v 1.77 1997/12/06 04:11:09 sef Exp $ */ #include "opt_devfs.h" @@ -59,6 +59,7 @@ #include <sys/reboot.h> #include <sys/sysproto.h> #include <sys/vmmeter.h> +#include <sys/unistd.h> #include <machine/cpu.h> @@ -194,6 +195,7 @@ main(framep) * which will not return. */ for( sipp = (struct sysinit **)sysinit_set.ls_items; *sipp; sipp++) { + if( (*sipp)->subsystem == SI_SUB_DUMMY) continue; /* skip dummy task(s)*/ @@ -204,8 +206,17 @@ main(framep) break; case SI_TYPE_KTHREAD: +#if !defined(SMP) /* kernel thread*/ - if (fork(&proc0, NULL)) + if (fork1(&proc0, RFMEM|RFFDG|RFPROC)) + panic("fork kernel thread"); + cpu_set_fork_handler(pfind(proc0.p_retval[0]), + (*sipp)->func, (*sipp)->udata); + break; +#endif + + case SI_TYPE_KPROCESS: + if (fork1(&proc0, RFFDG|RFPROC)) panic("fork kernel process"); cpu_set_fork_handler(pfind(proc0.p_retval[0]), (*sipp)->func, (*sipp)->udata); @@ -507,7 +518,7 @@ SYSINIT(retrofit, SI_SUB_ROOT_FDTAB, SI_ORDER_FIRST, xxx_vfs_root_fdtab, NULL) */ static void kthread_init __P((void *dummy)); -SYSINIT_KT(init,SI_SUB_KTHREAD_INIT, SI_ORDER_FIRST, kthread_init, NULL) +SYSINIT_KP(init,SI_SUB_KTHREAD_INIT, SI_ORDER_FIRST, kthread_init, NULL) extern void prepare_usermode __P((void)); |
