running code on all CPUs
Stanislav Sedov
stas at FreeBSD.org
Fri Oct 6 06:45:42 PDT 2006
On Thu, 5 Oct 2006 08:29:36 +0800
David Xu <davidxu at freebsd.org> wrote:
> 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.
>
You can find examples e.g. in hwpmc driver. Just grep by sched_bin.
--
Stanislav Sedov <stas at FreeBSD.org> [[Россия, Москва]]
PGP id: 0xEB269581 http://people.freebsd.org/~stas/stas.key.asc
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20061006/c34b0c27/attachment.pgp
More information about the freebsd-hackers
mailing list