Man Pages

getcpu(2) - phpMan getcpu(2) - phpMan

Command: man perldoc info search(apropos)  

GETCPU(2)                  Linux Programmer's Manual                 GETCPU(2)

       getcpu - determine CPU and NUMA node on which the calling thread is running

       #include <linux/getcpu.h>

       int getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *tcache);

       The  getcpu() system call identifies the processor and node on which the calling thread or process is currently
       running and writes them into the integers pointed to by the cpu and node arguments.  The processor is a  unique
       small  integer  identifying a CPU.  The node is a unique small identifier identifying a NUMA node.  When either
       cpu or node is NULL nothing is written to the respective pointer.

       The third argument to this system call is nowadays unused.

       The information placed in cpu is only guaranteed to be current at the time of the call: unless the CPU affinity
       has  been  fixed  using sched_setaffinity(2), the kernel might change the CPU at any time.  (Normally this does
       not happen because the scheduler tries to minimize movements between CPUs to keep caches hot, but it is  possi-
       ble.)   The caller must be prepared to handle the situation when cpu and node are no longer the current CPU and

       getcpu() was added in kernel 2.6.19 for x86_64 and i386.

       getcpu() is Linux specific.

       Linux makes a best effort to make this call as fast possible.  The intention of getcpu() is to  allow  programs
       to make optimizations with per-CPU data or for NUMA optimization.

       Glibc  does  not  provide  a  wrapper  for  this  system call; call it using syscall(2); or use sched_getcpu(3)

       The tcache argument is unused since Linux 2.6.24.  In earlier kernels, if this argument was non-NULL,  then  it
       specified  a  pointer  to  a caller-allocated buffer in thread-local storage that was used to provide a caching
       mechanism for getcpu().  Use of the cache could speed getcpu() calls, at the cost that there was a  very  small
       chance that the returned information would be out of date.  The caching mechanism was considered to cause prob-
       lems when migrating threads between CPUs, and so the argument is now ignored.

       mbind(2), sched_setaffinity(2), set_mempolicy(2), sched_getcpu(3), cpuset(7)

       This page is part of release 3.22 of the Linux man-pages project.  A description of the project,  and  informa-
       tion about reporting bugs, can be found at

Linux                             2008-06-03                         GETCPU(2)