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/jiffies.h> 11#include <linux/time.h> 12#include <asm/vsyscall.h> 13#include <asm/vgtod.h> 14 15notrace long 16__vdso_getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *unused) 17{ 18 unsigned int p; 19 20 p = __getcpu(); 21 22 if (cpu) 23 *cpu = p & VGETCPU_CPU_MASK; 24 if (node) 25 *node = p >> 12; 26 return 0; 27} 28 29long getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *tcache) 30 __attribute__((weak, alias("__vdso_getcpu"))); 31