1// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2// for details. All rights reserved. Use of this source code is governed by a
3// BSD-style license that can be found in the LICENSE file.
4
5#include "vm/globals.h"
6#if defined(HOST_OS_ANDROID)
7
8#include "vm/cpuinfo.h"
9#include "vm/proccpuinfo.h"
10
11#include "platform/assert.h"
12
13namespace dart {
14
15CpuInfoMethod CpuInfo::method_ = kCpuInfoDefault;
16const char* CpuInfo::fields_[kCpuInfoMax] = {0};
17
18void CpuInfo::Init() {
19 // Initialize our read from /proc/cpuinfo.
20 method_ = kCpuInfoSystem;
21 ProcCpuInfo::Init();
22
23#if defined(HOST_ARCH_IA32) || defined(HOST_ARCH_X64)
24 fields_[kCpuInfoProcessor] = "vendor_id";
25 fields_[kCpuInfoModel] = "model name";
26 fields_[kCpuInfoHardware] = "model name";
27 fields_[kCpuInfoFeatures] = "flags";
28 fields_[kCpuInfoArchitecture] = "CPU architecture";
29#elif defined(HOST_ARCH_ARM) || defined(HOST_ARCH_ARM64)
30 fields_[kCpuInfoProcessor] = "Processor";
31 fields_[kCpuInfoModel] = "model name";
32 fields_[kCpuInfoHardware] = "Hardware";
33 fields_[kCpuInfoFeatures] = "Features";
34 fields_[kCpuInfoArchitecture] = "CPU architecture";
35#else
36#error Unrecognized target architecture
37#endif
38}
39
40void CpuInfo::Cleanup() {
41 ProcCpuInfo::Cleanup();
42}
43
44bool CpuInfo::FieldContains(CpuInfoIndices idx, const char* search_string) {
45 ASSERT(method_ != kCpuInfoDefault);
46 return ProcCpuInfo::FieldContains(FieldName(idx), search_string);
47}
48
49const char* CpuInfo::ExtractField(CpuInfoIndices idx) {
50 ASSERT(method_ != kCpuInfoDefault);
51 return ProcCpuInfo::ExtractField(FieldName(idx));
52}
53
54bool CpuInfo::HasField(const char* field) {
55 ASSERT(method_ != kCpuInfoDefault);
56 return ProcCpuInfo::HasField(field);
57}
58
59} // namespace dart
60
61#endif // defined(HOST_OS_ANDROID)
62