diff options
author | Marat Dukhan <marat@fb.com> | 2017-08-24 16:10:46 -0700 |
---|---|---|
committer | Marat Dukhan <marat@fb.com> | 2017-08-24 16:22:38 -0700 |
commit | 006461ae0a63d42863bb0665c3917e8f91a079f9 (patch) | |
tree | 2c113480b71830d8ba6858ceb9873912c7282422 /src/arm/linux/cpuinfo.c | |
parent | 84ad107ff2ee7a8a55ca4be8d005342e3e4a2ee1 (diff) | |
download | cpuinfo-006461ae0a63d42863bb0665c3917e8f91a079f9.tar.gz |
Detect ARM chipset name on Android
Diffstat (limited to 'src/arm/linux/cpuinfo.c')
-rw-r--r-- | src/arm/linux/cpuinfo.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/arm/linux/cpuinfo.c b/src/arm/linux/cpuinfo.c index f1d2ea9..3b04cd8 100644 --- a/src/arm/linux/cpuinfo.c +++ b/src/arm/linux/cpuinfo.c @@ -630,6 +630,9 @@ static void parse_cache_number( #endif /* CPUINFO_ARCH_ARM */ struct proc_cpuinfo_parser_state { +#if defined(__ANDROID__) + char* hardware; +#endif uint32_t processor_index; uint32_t max_processors_count; struct cpuinfo_arm_linux_processor* processors; @@ -778,7 +781,15 @@ static bool parse_line( } else if (memcmp(line_start, "BogoMIPS", key_length) == 0) { /* BogoMIPS is useless, don't parse */ } else if (memcmp(line_start, "Hardware", key_length) == 0) { - /* TODO: parse to extract SoC name */ + size_t value_length = value_end - value_start; + if (value_length > CPUINFO_HARDWARE_VALUE_MAX) { + cpuinfo_log_info( + "length of Hardware value \"%.*s\" in /proc/cpuinfo exceeds limit (%d): truncating to the limit", + (int) value_length, value_start, CPUINFO_HARDWARE_VALUE_MAX); + value_length = CPUINFO_HARDWARE_VALUE_MAX; + } + memcpy(state->hardware, value_start, value_length); + cpuinfo_log_debug("parsed /proc/cpuinfo Hardware = \"%.*s\"", (int) value_length, value_start); } else if (memcmp(line_start, "Revision", key_length) == 0) { /* Board revision, no use for now */ } else { @@ -869,10 +880,12 @@ static bool parse_line( } bool cpuinfo_arm_linux_parse_proc_cpuinfo( + char hardware[restrict static CPUINFO_HARDWARE_VALUE_MAX], uint32_t max_processors_count, struct cpuinfo_arm_linux_processor processors[restrict static max_processors_count]) { struct proc_cpuinfo_parser_state state = { + .hardware = hardware, .processor_index = 0, .max_processors_count = max_processors_count, .processors = processors, |