Date: Mon, 12 Jan 2004 11:08:47 -0500 From: John Baldwin <jhb@FreeBSD.org> To: "Daan Vreeken [PA4DAN]" <Danovitsch@Vitsch.net>, FreeBSD-current@FreeBSD.org Subject: Re: Kernel threads and printf locking question Message-ID: <200401121108.47481.jhb@FreeBSD.org> In-Reply-To: <200401112142.53073.Danovitsch@Vitsch.net> References: <200401112142.53073.Danovitsch@Vitsch.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday 11 January 2004 03:42 pm, Daan Vreeken [PA4DAN] wrote: > Hi, > > I am writing a kernel module in which I have created a kernel thread with > kthread_create. For debugging I have added a couple of printf's in the > thread routine. Running the module on a single-proc system works fine, but > when running it on one of my SMP machines the console freezes after a > couple of seconds. > > I have been looking through the archives and through some other drivers ( > for example randomdev.c uses a kthread and printf's from it ). I found a > version of randomdev.c with google that lock's Giant while calling printf, > but randomdev.c in my src-tree has no locking there. (I'm using > 5.1-RELEASE) Right now I have changed all printf's in my module into a > macro-function that checks if ( curproc == our thread ) and locks Giant if > true, then printf's. (since some of the routines get called both from the > thread and from other places.) > > What is the current state of printf-locking when called from a kernel > thread? Is locking Giant the only possible way to avoid problems on SMP > systems, or is there a more fine-grained printf lock available? (on > 5.1-RELEASE or -current) printf really probably does require Giant right now, it just happens to be used very often after bootup when SMP is running. -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200401121108.47481.jhb>