blob: b4036a38828792333ff2173433a44ed3fc01134d [file] [log] [blame]
John Park398c74a2018-10-20 21:17:39 -07001#include "aos/init.h"
brians343bc112013-02-10 01:53:46 +00002
3#include <stdio.h>
4#include <string.h>
5#include <sys/mman.h>
6#include <errno.h>
7#include <sched.h>
8#include <sys/resource.h>
brians343bc112013-02-10 01:53:46 +00009#include <sys/types.h>
10#include <unistd.h>
11#include <stdlib.h>
brians343bc112013-02-10 01:53:46 +000012
Alex Perrycb7da4b2019-08-28 19:35:56 -070013#include "aos/realtime.h"
Austin Schuh094d09b2020-11-20 23:26:52 -080014#include "gflags/gflags.h"
15#include "glog/logging.h"
Brian Silverman40486622014-12-30 17:38:55 -080016
Austin Schuh707c8352020-03-15 14:27:25 -070017DEFINE_bool(coredump, false, "If true, write core dumps on failure.");
18
brians343bc112013-02-10 01:53:46 +000019namespace aos {
brians343bc112013-02-10 01:53:46 +000020namespace {
Austin Schuh094d09b2020-11-20 23:26:52 -080021bool initialized = false;
Austin Schuh3d4d5df2015-10-17 15:51:41 -070022} // namespace
23
Austin Schuh094d09b2020-11-20 23:26:52 -080024bool IsInitialized() { return initialized; }
25
Alex Perrycb7da4b2019-08-28 19:35:56 -070026void InitGoogle(int *argc, char ***argv) {
Austin Schuh094d09b2020-11-20 23:26:52 -080027 CHECK(!IsInitialized()) << "Only initialize once.";
Alex Perrycb7da4b2019-08-28 19:35:56 -070028 FLAGS_logtostderr = true;
29 google::InitGoogleLogging((*argv)[0]);
30 gflags::ParseCommandLineFlags(argc, argv, true);
31 google::InstallFailureSignalHandler();
Austin Schuh62288252020-11-18 23:26:04 -080032
Austin Schuh094d09b2020-11-20 23:26:52 -080033 if (FLAGS_coredump) {
34 WriteCoreDumps();
brians343bc112013-02-10 01:53:46 +000035 }
36
Austin Schuh094d09b2020-11-20 23:26:52 -080037 RegisterMallocHook();
38 initialized = true;
Brian Silvermane4d8b282015-12-24 13:44:48 -080039}
40
brians343bc112013-02-10 01:53:46 +000041} // namespace aos