| |
| Export cpu topology info via sysfs. Items (attributes) are similar |
| to /proc/cpuinfo. |
| |
| 1) /sys/devices/system/cpu/cpuX/topology/physical_package_id: |
| represent the physical package id of cpu X; |
| 2) /sys/devices/system/cpu/cpuX/topology/core_id: |
| represent the cpu core id to cpu X; |
| 3) /sys/devices/system/cpu/cpuX/topology/thread_siblings: |
| represent the thread siblings to cpu X in the same core; |
| 4) /sys/devices/system/cpu/cpuX/topology/core_siblings: |
| represent the thread siblings to cpu X in the same physical package; |
| |
| To implement it in an architecture-neutral way, a new source file, |
| drivers/base/topology.c, is to export the 4 attributes. |
| |
| For an architecture to support this feature, it must define some of |
| these macros in include/asm-XXX/topology.h: |
| #define topology_physical_package_id(cpu) |
| #define topology_core_id(cpu) |
| #define topology_thread_siblings(cpu) |
| #define topology_core_siblings(cpu) |
| |
| The type of **_id is int. |
| The type of siblings is cpumask_t. |
| |
| To be consistent on all architectures, include/linux/topology.h |
| provides default definitions for any of the above macros that are |
| not defined by include/asm-XXX/topology.h: |
| 1) physical_package_id: -1 |
| 2) core_id: 0 |
| 3) thread_siblings: just the given CPU |
| 4) core_siblings: just the given CPU |