blob: 99d18b296001737948eb6e85d334dd3bd41ca17e [file] [log] [blame]
henrike@webrtc.orgf0488722014-05-13 18:00:26 +00001/*
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
18namespace rtc {
19
20class 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
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000031 // The number of CPU Threads in the system.
tommiefefda62015-08-20 05:04:09 -070032 static int GetMaxCpus();
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000033 // The number of CPU Threads currently available to this process.
tommiefefda62015-08-20 05:04:09 -070034 static int GetCurCpus();
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000035 // Identity of the CPUs.
36 Architecture GetCpuArchitecture();
37 std::string GetCpuVendor();
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000038 // Total amount of physical memory, in bytes.
Peter Boström0c4e06b2015-10-07 12:23:21 +020039 int64_t GetMemorySize();
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000040 // The model name of the machine, e.g. "MacBookAir1,1"
41 std::string GetMachineModel();
42
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000043 private:
tommiefefda62015-08-20 05:04:09 -070044 static int logical_cpus_;
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000045};
46
47} // namespace rtc
48
49#endif // WEBRTC_BASE_SYSTEMINFO_H__