1 /* 2 * Copyright 2006 Andi Kleen, SUSE Labs. 3 * Subject to the GNU Public License, v.2 4 * 5 * Fast user context implementation of getcpu() 6 */ 7 8 #include <linux/kernel.h> 9 #include <linux/getcpu.h> 10 #include <linux/time.h> 11 #include <asm/vgtod.h> 12 13 notrace long 14 __vdso_getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *unused) 15 { 16 unsigned int p; 17 18 p = __getcpu(); 19 20 if (cpu) 21 *cpu = p & VGETCPU_CPU_MASK; 22 if (node) 23 *node = p >> 12; 24 return 0; 25 } 26 27 long getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *tcache) 28 __attribute__((weak, alias("__vdso_getcpu"))); 29