1 | // Copyright (c) 2016, 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_FUCHSIA) |
7 | |
8 | #include "vm/cpuinfo.h" |
9 | |
10 | #include "platform/assert.h" |
11 | #include "vm/cpuid.h" |
12 | |
13 | namespace dart { |
14 | |
15 | CpuInfoMethod CpuInfo::method_ = kCpuInfoDefault; |
16 | const char* CpuInfo::fields_[kCpuInfoMax] = {0}; |
17 | |
18 | void CpuInfo::Init() { |
19 | // TODO(zra): Add support for HOST_ARCH_ARM64 |
20 | #if defined(HOST_ARCH_IA32) || defined(HOST_ARCH_X64) |
21 | method_ = kCpuInfoCpuId; |
22 | |
23 | // Initialize the CpuId information. |
24 | CpuId::Init(); |
25 | |
26 | fields_[kCpuInfoProcessor] = "Processor" ; |
27 | fields_[kCpuInfoModel] = "Hardware" ; |
28 | fields_[kCpuInfoHardware] = "Hardware" ; |
29 | fields_[kCpuInfoFeatures] = "Features" ; |
30 | fields_[kCpuInfoArchitecture] = "CPU architecture" ; |
31 | #endif |
32 | } |
33 | |
34 | void CpuInfo::Cleanup() { |
35 | if (method_ == kCpuInfoCpuId) { |
36 | CpuId::Cleanup(); |
37 | } |
38 | } |
39 | |
40 | bool CpuInfo::FieldContains(CpuInfoIndices idx, const char* search_string) { |
41 | if (method_ == kCpuInfoCpuId) { |
42 | return strstr(CpuId::field(idx), search_string); |
43 | } else { |
44 | return false; |
45 | } |
46 | } |
47 | |
48 | const char* CpuInfo::ExtractField(CpuInfoIndices idx) { |
49 | if (method_ == kCpuInfoCpuId) { |
50 | return CpuId::field(idx); |
51 | } else { |
52 | return strdup("" ); |
53 | } |
54 | } |
55 | |
56 | bool CpuInfo::HasField(const char* field) { |
57 | if (method_ == kCpuInfoCpuId) { |
58 | return (strcmp(field, fields_[kCpuInfoProcessor]) == 0) || |
59 | (strcmp(field, fields_[kCpuInfoModel]) == 0) || |
60 | (strcmp(field, fields_[kCpuInfoHardware]) == 0) || |
61 | (strcmp(field, fields_[kCpuInfoFeatures]) == 0); |
62 | } else { |
63 | return false; |
64 | } |
65 | } |
66 | |
67 | } // namespace dart |
68 | |
69 | #endif // defined(HOST_OS_FUCHSIA) |
70 | |