vgetcpu.c 625 B

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