1 /* 2 * Copyright 2008 The WebRTC Project Authors. All rights reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #ifndef WEBRTC_BASE_SYSTEMINFO_H__ 12 #define WEBRTC_BASE_SYSTEMINFO_H__ 13 14 #include <string> 15 16 #include "webrtc/base/basictypes.h" 17 18 namespace rtc { 19 20 class SystemInfo { 21 public: 22 enum Architecture { 23 SI_ARCH_UNKNOWN = -1, 24 SI_ARCH_X86 = 0, 25 SI_ARCH_X64 = 1, 26 SI_ARCH_ARM = 2 27 }; 28 29 SystemInfo(); 30 31 // The number of CPU Threads in the system. 32 static int GetMaxCpus(); 33 // The number of CPU Threads currently available to this process. 34 static int GetCurCpus(); 35 // Identity of the CPUs. 36 Architecture GetCpuArchitecture(); 37 std::string GetCpuVendor(); 38 // Total amount of physical memory, in bytes. 39 int64_t GetMemorySize(); 40 // The model name of the machine, e.g. "MacBookAir1,1" 41 std::string GetMachineModel(); 42 43 private: 44 static int logical_cpus_; 45 }; 46 47 } // namespace rtc 48 49 #endif // WEBRTC_BASE_SYSTEMINFO_H__ 50