running code on all CPUs
Jonathan Chen
jon at freebsd.org
Wed Oct 4 14:41:05 PDT 2006
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
More information about the freebsd-hackers
mailing list