Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Oct 2006 08:29:36 +0800
From:      David Xu <davidxu@freebsd.org>
To:        freebsd-hackers@freebsd.org
Cc:        Jonathan Chen <jon@freebsd.org>
Subject:   Re: running code on all CPUs
Message-ID:  <200610050829.36266.davidxu@freebsd.org>
In-Reply-To: <20061004214040.GA6878@porthos.spock.org>
References:  <20061004214040.GA6878@porthos.spock.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 05 October 2006 05:40, Jonathan Chen wrote:
> Hello,
>
> I'm currently writing kernel code to use MCA (machine check architecture)
> in order to detect things like ECC errors.  As part of this, I need to run
> code on all CPUs periodically to check some status registers.  Where is the
> best place to do this?  It doesn't seem that I can use regular kernel
> threads since I can't specify a CPU binding with that interface.  I've
> thought about hooking a function call to either the beginning of
> idle_proc() or somewhere in mi_switch(), but neither solution seems optimal
> since there are no guarantees when idle_proc() is ran and mi_switch() seems
> like a really bad idea from a performance standpoint.  Suggestions?
>
> Also, are there any locking pitfalls or other issues I should be aware of
> when writing code to run in either idle_proc() or mi_switch()?
>
> -Jon

AFAIK, you can use scheduler API, the sched_bind() moves current thread to
a specific CPU, hope this helps.

David Xu



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200610050829.36266.davidxu>