Re: getting the cpuid for a userspace process ?

看板FB_current作者時間14年前 (2011/11/04 10:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串7/7 (看更多)
On Tue, Oct 25, 2011 at 8:54 PM, John Baldwin <jhb@freebsd.org> wrote: > On Tuesday, October 25, 2011 2:09:12 pm Poul-Henning Kamp wrote: >> In message <201110251342.45194.jhb@freebsd.org>, John Baldwin writes: >> >On Tuesday, October 25, 2011 11:06:22 am Luigi Rizzo wrote: >> >> as the subject says... is there any way to get the current >> >> CPU id for a userspace process (of course, >> >> valid only at the time the function is called as the >> >> process might be arbitrarily moved while it runs) >> > >> >Not from userland, no. =A0On x86 you can use cpuid to fetch the APIC ID= , but >> >that does not map 1:1 to FreeBSD cpu IDs. >> >> How does JEmalloc do it ? > > I don't think it does on FreeBSD. =A0The only thing malloc() knows on Fre= eBSD is > the total number of CPUs. =A0I believe Linux has a system call that retur= ns this > though (sched_getcpu() is the public interface which is a wrapper around = a > getcpu() system call). =A0From the manpage it would seem that sched_getcp= u() > uses a per-thread shared page of some sort so that it doesn't actually ha= ve to > enter the kernel to get the CPU ID. =A0Alternatively, you could imagine i= t on > x86 at least exporting a table mapping APIC IDs to CPU IDs and then using > cpuid and that table to do the lookup purely in userland. =A0That would o= nly > necessitate a global shared page and not one per-thread. =A0You could sti= ll fall > back to a system call for other architectures that simply returned > curthread->td_oncpu. Exposing a table mapping to userland would be somewhat similar to the way L4Ka::Pistachio exports a UTCB area to userland threads: https://github.com/l4ka/pistachio/blob/dd624dde5bce4ab120b2fcecbbcd94473eff= b201/kernel/src/glue/v4-x86/utcb.h > -- > John Baldwin -cpghost. --=20 Cordula's Web. http://www.cordula.ws/ _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
文章代碼(AID): #1EiqwZ_8 (FB_current)
討論串 (同標題文章)
文章代碼(AID): #1EiqwZ_8 (FB_current)