Date: Fri, 26 Oct 2007 21:20:31 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: julian@elischer.org Cc: cvs-src@freebsd.org, src-committers@freebsd.org, julian@freebsd.org, cvs-all@freebsd.org, jhb@freebsd.org Subject: Re: cvs commit: src/sys/sys kthread.h src/sys/kern kern_kthread.c Message-ID: <20071026.212031.-1607499905.imp@bsdimp.com> In-Reply-To: <4722399E.3090209@elischer.org> References: <200710261703.l9QH3Nmt061137@repoman.freebsd.org> <200710261420.34168.jhb@freebsd.org> <4722399E.3090209@elischer.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <4722399E.3090209@elischer.org> Julian Elischer <julian@elischer.org> writes: : John Baldwin wrote: : > On Friday 26 October 2007 01:03:22 pm Julian Elischer wrote: : >> julian 2007-10-26 17:03:22 UTC : >> : >> FreeBSD src repository : >> : >> Modified files: : >> sys/sys kthread.h : >> sys/kern kern_kthread.c : >> Log: : >> kthread_exit needs no stinkin argument. : > : > So an important property of the old kthread_exit() (now kproc_exit()) was that : > a kernel module could safely ensure that a kthread it created was out of the : > kernel module's text segment before returning from a module unload hook to : > prevent kernel panics by sleeping on the proc pointer with the proc lock like : > so: : > : > mtx_lock(&mylock); : > PROC_LOCK(p); : > signal_death = 1; : > mtx_unlock(&mylock); : > msleep(p, &p->p_mtx, ...); : > PROC_UNLOCK(p); : > : > And have the main thread do this: : > : > ... : > mtx_lock(&mylock); : > while (!signal_death) { : > ... fetch work, may drop mylock... : > } : > mtx_unlock(&mylock); : > kthread_exit(0); : : the kproc_exit still does.. : : I didn't see any users of it in the code that I've switched to kthreads : so far so I haven't added it to the kthread_exit() yet. : : the intr code does: : thread_lock(td); : ithread->it_flags |= IT_DEAD; : if (TD_AWAITING_INTR(td)) { : TD_CLR_IWAIT(td); : sched_add(td, SRQ_INTR); : } : thread_unlock(td); : : but no wait. : : but I'll look further.. maybe it's in the drivers? See dev/pccbb/pccbb.c for an example of the old usage. Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071026.212031.-1607499905.imp>