Date: Fri, 11 Aug 2000 17:32:32 +0100 (BST) From: Nick Hibma <n_hibma@qubesoft.com> To: Peter Wemm <peter@FreeBSD.org> Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/i386/i386 locore.s machdep.c mp_machdep.c vm_machdep.c src/sys/i386/include cpu.h md_var.h src/sys/kern init_main.c kern_descrip.c kern_kthread.c Message-ID: <Pine.BSF.4.20.0008111732150.5375-100000@henny.webweaving.org> In-Reply-To: <200008110905.CAA38291@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
And the crowd goes wild!
Nick
On Fri, 11 Aug 2000, Peter Wemm wrote:
> peter 2000/08/11 02:05:13 PDT
>
> Modified files:
> sys/i386/i386 locore.s machdep.c mp_machdep.c
> vm_machdep.c
> sys/i386/include cpu.h md_var.h
> sys/kern init_main.c kern_descrip.c kern_kthread.c
> Log:
> Clean up some low level bootstrap code:
>
> - stop using the evil 'struct trapframe' argument for mi_startup()
> (formerly main()). There are much better ways of doing it.
> - do not use prepare_usermode() - setregs() in execve() will do it
> all for us as long as the p_md.md_regs pointer is set. (which is
> now done in machdep.c rather than init_main.c. The Alpha port did it
> this way all along and is much cleaner).
> - collect all the magic %cr0 etc register settings into one place and
> have the AP's call that instead of using magic numbers (!!) that keep
> changing over and over again.
> - Make it safe to call kthread_create() earlier, including during the
> device probe sequence. It doesn't need the callback mechanism that
> NetBSD's version uses.
> - kthreads created this way are root-less as they exist before the root
> filesystem is mounted. init(1) is set up so that it aquires the root
> pointers prior to running. If other kthreads want filesystem acccess
> we can make this code more generic.
> - set all threads start times once we have decided what time it is.
> - init uses a trampoline rather than the evil prepare_usermode() hack.
> - kern_descrip.c has a couple of tweaks to deal with forking when there
> is no rootdir or cwd etc.
> - adjust the early SYSINIT() sequence so that a few prereqisites are in
> place. eg: make sure the run queue is initialized before doing forks.
>
> With this, the USB code can easily create a kthread to do the device
> tree discovery. (I have tested it, it works nicely).
>
> There are still some open issues before this is truely useful.
> - tsleep() does not like working before the clock is running. It
> sort-of tries to spin wait, but it can do more useful things now.
> - stopping a kthread in kld code at unload time is "interesting" but
> we have a solution for that.
>
> The Alpha code needs no changes for this. It already uses pretty much the
> same strategies, but a little cleaner.
>
> Revision Changes Path
> 1.136 +1 -46 src/sys/i386/i386/locore.s
> 1.400 +20 -1 src/sys/i386/i386/machdep.c
> 1.120 +3 -12 src/sys/i386/i386/mp_machdep.c
> 1.137 +9 -8 src/sys/i386/i386/vm_machdep.c
> 1.45 +1 -2 src/sys/i386/include/cpu.h
> 1.36 +2 -1 src/sys/i386/include/md_var.h
> 1.138 +62 -98 src/sys/kern/init_main.c
> 1.88 +13 -7 src/sys/kern/kern_descrip.c
> 1.6 +1 -5 src/sys/kern/kern_kthread.c
>
>
--
Qube Software, Ltd. Private:
n_hibma@qubesoft.com n_hibma@webweaving.org
n_hibma@freebsd.org
http://www.qubesoft.com/ http://www.etla.net/~n_hibma/
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.20.0008111732150.5375-100000>
