dart-sdk/runtime/vm/cpuinfo.h
Siva Annamalai 5792996130 1. Fix memory leaks reported by running a simple test using ASAN
2. Get rid of some methods in cpuninfo that are not being used anymore and make some methods private.

R=zra@google.com

Review URL: https://codereview.chromium.org/1677043003 .
2016-02-09 10:54:34 -08:00

76 lines
1.9 KiB
C++

// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#ifndef VM_CPUINFO_H_
#define VM_CPUINFO_H_
#include "platform/assert.h"
#include "vm/allocation.h"
namespace dart {
// Indices into cpuinfo field name arrays.
enum CpuInfoIndices {
kCpuInfoProcessor = 0,
kCpuInfoModel = 1,
kCpuInfoHardware = 2,
kCpuInfoFeatures = 3,
kCpuInfoMax = 4,
};
// For Intel architectures, the method to use to get CPU information.
enum CpuInfoMethod {
// Use the cpuid instruction.
kCpuInfoCpuId,
// Use system calls.
kCpuInfoSystem,
// Use whatever the default is for a particular OS:
// Linux, Windows -> CpuId,
// Android, MacOS -> System.
kCpuInfoDefault,
};
class CpuInfo : public AllStatic {
public:
static void InitOnce();
static void Cleanup();
static const char* FieldName(CpuInfoIndices idx) {
ASSERT((idx >= 0) && (idx < kCpuInfoMax));
return fields_[idx];
}
// Returns true if the cpuinfo field contains the string.
static bool FieldContains(CpuInfoIndices idx, const char* search_string);
// Returns true if the cpuinfo field [field] exists and is non-empty.
static bool HasField(const char* field);
// Returns the field describing the CPU model. Caller is responsible for
// freeing the result.
static const char* GetCpuModel() {
if (HasField(FieldName(kCpuInfoHardware))) {
return ExtractField(kCpuInfoHardware);
} else {
return strdup("Unknown");
}
}
private:
// Returns the field. Caller is responsible for freeing the result.
static const char* ExtractField(CpuInfoIndices idx);
// The method to use to acquire info about the CPU.
static CpuInfoMethod method_;
// Cpuinfo field names.
static const char* fields_[kCpuInfoMax];
};
} // namespace dart
#endif // VM_CPUINFO_H_