// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/sys_info.h" #include namespace base { // static void SysInfo::OperatingSystemVersionNumbers(int32 *major_version, int32 *minor_version, int32 *bugfix_version) { static bool is_initialized = false; static int32 major_version_cached = 0; static int32 minor_version_cached = 0; static int32 bugfix_version_cached = 0; if (!is_initialized) { // Gestalt can't be called in the sandbox, so we cache its return value. Gestalt(gestaltSystemVersionMajor, reinterpret_cast(&major_version_cached)); Gestalt(gestaltSystemVersionMinor, reinterpret_cast(&minor_version_cached)); Gestalt(gestaltSystemVersionBugFix, reinterpret_cast(&bugfix_version_cached)); is_initialized = true; } *major_version = major_version_cached; *minor_version = minor_version_cached; *bugfix_version = bugfix_version_cached; } // static void SysInfo::CacheSysInfo() { // Due to startup time concerns [premature optimization?] we only cache values // from functions we know to be called in the renderer & fail when the sandbox // is enabled. NumberOfProcessors(); int32 dummy; OperatingSystemVersionNumbers(&dummy, &dummy, &dummy); } } // namespace base