1 // Copyright 2015 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 "mandoline/services/core_services/core_services_application_delegate.h"
6 #include "mojo/application/public/cpp/application_runner.h"
7 #include "third_party/mojo/src/mojo/public/c/system/main.h"
9 // TODO(erg): Much of this will be the same between mojo applications. Maybe we
10 // could centralize this code?
11 #if defined(OS_LINUX) && !defined(OS_ANDROID)
12 #include "base/rand_util.h"
13 #include "base/sys_info.h"
14 #include "third_party/icu/source/i18n/unicode/timezone.h"
16 // TODO(erg): Much of this was coppied from zygote_main_linux.cc
18 void __attribute__((visibility("default"))) MojoSandboxWarm() {
20 base::SysInfo::AmountOfPhysicalMemory();
21 base::SysInfo::MaxSharedMemorySize();
22 base::SysInfo::NumberOfProcessors();
24 // ICU DateFormat class (used in base/time_format.cc) needs to get the
25 // Olson timezone ID by accessing the zoneinfo files on disk. After
26 // TimeZone::createDefault is called once here, the timezone ID is
27 // cached and there's no more need to access the file system.
28 scoped_ptr
<icu::TimeZone
> zone(icu::TimeZone::createDefault());
30 // TODO(erg): Perform OpenSSL warmup; it wants access to /dev/urandom.
33 #endif // defined(OS_LINUX) && !defined(OS_ANDROID)
35 MojoResult
MojoMain(MojoHandle shell_handle
) {
36 mojo::ApplicationRunner
runner(
37 new core_services::CoreServicesApplicationDelegate
);
38 return runner
.Run(shell_handle
);