c08c820508
This patch adds a vgetcpu vsyscall, which depending on the CPU RDTSCP capability uses either the RDTSCP or CPUID to obtain a CPU and node numbers and pass them to the program. AK: Lots of changes over Vojtech's original code: Better prototype for vgetcpu() It's better to pass the cpu / node numbers as separate arguments to avoid mistakes when going from SMP to NUMA. Also add a fast time stamp based cache using a user supplied argument to speed things more up. Use fast method from Chuck Ebbert to retrieve node/cpu from GDT limit instead of CPUID Made sure RDTSCP init is always executed after node is known. Drop printk Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Andi Kleen <ak@suse.de>
17 lines
524 B
C
17 lines
524 B
C
#ifndef _LINUX_GETCPU_H
|
|
#define _LINUX_GETCPU_H 1
|
|
|
|
/* Cache for getcpu() to speed it up. Results might be upto a jiffie
|
|
out of date, but will be faster.
|
|
User programs should not refer to the contents of this structure.
|
|
It is only a cache for vgetcpu(). It might change in future kernels.
|
|
The user program must store this information per thread (__thread)
|
|
If you want 100% accurate information pass NULL instead. */
|
|
struct getcpu_cache {
|
|
unsigned long t0;
|
|
unsigned long t1;
|
|
unsigned long res[4];
|
|
};
|
|
|
|
#endif
|