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 13notrace 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 27long getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *tcache) 28 __attribute__((weak, alias("__vdso_getcpu"))); 29