Skip site navigation (1)Skip section navigation (2)
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>