1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/sys_info.h"
9 #include <sys/sysctl.h>
11 #include "base/logging.h"
15 int SysInfo::NumberOfProcessors() {
16 int mib
[] = { CTL_HW
, HW_NCPU
};
18 size_t size
= sizeof(ncpu
);
19 if (sysctl(mib
, arraysize(mib
), &ncpu
, &size
, NULL
, 0) == -1) {
26 int64
SysInfo::AmountOfPhysicalMemory() {
27 long pages
= sysconf(_SC_PHYS_PAGES
);
28 long page_size
= sysconf(_SC_PAGESIZE
);
29 if (pages
== -1 || page_size
== -1) {
34 return static_cast<int64
>(pages
) * page_size
;
37 size_t SysInfo::MaxSharedMemorySize() {
38 int mib
[] = { CTL_KERN
, KERN_SHMINFO
, KERN_SHMINFO_SHMMAX
};
40 size_t size
= sizeof(limit
);
41 if (sysctl(mib
, arraysize(mib
), &limit
, &size
, NULL
, 0) < 0) {