1 // SPDX-License-Identifier: GPL-2.0-only 1 // SPDX-License-Identifier: GPL-2.0-only 2 #include <string.h> 2 #include <string.h> 3 #include "api/fs/fs.h" 3 #include "api/fs/fs.h" 4 #include "cputopo.h" 4 #include "cputopo.h" 5 #include "smt.h" 5 #include "smt.h" 6 6 7 bool smt_on(void) !! 7 bool smt_on(const struct cpu_topology *topology) 8 { 8 { 9 static bool cached; 9 static bool cached; 10 static bool cached_result; 10 static bool cached_result; 11 int fs_value; 11 int fs_value; 12 12 13 if (cached) 13 if (cached) 14 return cached_result; 14 return cached_result; 15 15 16 if (sysfs__read_int("devices/system/cp 16 if (sysfs__read_int("devices/system/cpu/smt/active", &fs_value) >= 0) 17 cached_result = (fs_value == 1 17 cached_result = (fs_value == 1); 18 else 18 else 19 cached_result = cpu_topology__ !! 19 cached_result = cpu_topology__smt_on(topology); 20 20 21 cached = true; 21 cached = true; 22 return cached_result; 22 return cached_result; 23 } 23 } 24 24 25 bool core_wide(bool system_wide, const char *u !! 25 bool core_wide(bool system_wide, const char *user_requested_cpu_list, >> 26 const struct cpu_topology *topology) 26 { 27 { 27 /* If not everything running on a core 28 /* If not everything running on a core is being recorded then we can't use core_wide. */ 28 if (!system_wide) 29 if (!system_wide) 29 return false; 30 return false; 30 31 31 /* Cheap case that SMT is disabled and 32 /* Cheap case that SMT is disabled and therefore we're inherently core_wide. */ 32 if (!smt_on()) !! 33 if (!smt_on(topology)) 33 return true; 34 return true; 34 35 35 return cpu_topology__core_wide(online_ !! 36 return cpu_topology__core_wide(topology, user_requested_cpu_list); 36 } 37 } 37 38
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.