blob: d4a7f6903f818303106db934c059701720be3f57 [file] [log] [blame]
Marat Dukhanbfff3482017-10-15 22:24:32 +00001#define _GNU_SOURCE 1
Marat Dukhand9f76e02017-09-24 22:46:08 -07002#include <stdbool.h>
3#include <stdint.h>
4#include <stdlib.h>
5#include <string.h>
6#include <errno.h>
7
8#include <sched.h>
9
10#include <cpuinfo.h>
Marat Dukhan30401972017-09-26 18:35:52 -070011#include <api.h>
Marat Dukhand9f76e02017-09-24 22:46:08 -070012#include <linux/api.h>
13
14
15const struct cpuinfo_processor** cpuinfo_linux_cpu_to_processor_map;
16const struct cpuinfo_core** cpuinfo_linux_cpu_to_core_map;
17
18
Marat Dukhan30401972017-09-26 18:35:52 -070019const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_current_processor(void) {
Marat Dukhand9f76e02017-09-24 22:46:08 -070020 const int cpu = sched_getcpu();
21 if (cpu >= 0) {
22 return cpuinfo_linux_cpu_to_processor_map[cpu];
23 } else {
24 return &cpuinfo_processors[0];
25 }
26}
27
Marat Dukhan30401972017-09-26 18:35:52 -070028const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_current_core(void) {
Marat Dukhand9f76e02017-09-24 22:46:08 -070029 const int cpu = sched_getcpu();
30 if (cpu >= 0) {
31 return cpuinfo_linux_cpu_to_core_map[cpu];
32 } else {
33 return &cpuinfo_cores[0];
34 }
35}