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>