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 | |
13 | namespace dart { |
14 | |
15 | CpuInfoMethod CpuInfo::method_ = kCpuInfoDefault; |
16 | const char* CpuInfo::fields_[kCpuInfoMax] = {0}; |
17 | |
18 | void 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 | |
40 | void CpuInfo::Cleanup() { |
41 | ProcCpuInfo::Cleanup(); |
42 | } |
43 | |
44 | bool CpuInfo::FieldContains(CpuInfoIndices idx, const char* search_string) { |
45 | ASSERT(method_ != kCpuInfoDefault); |
46 | return ProcCpuInfo::FieldContains(FieldName(idx), search_string); |
47 | } |
48 | |
49 | const char* CpuInfo::ExtractField(CpuInfoIndices idx) { |
50 | ASSERT(method_ != kCpuInfoDefault); |
51 | return ProcCpuInfo::ExtractField(FieldName(idx)); |
52 | } |
53 | |
54 | bool 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 | |