Convert aos over to flatbuffers
Everything builds, and all the tests pass. I suspect that some entries
are missing from the config files, but those will be found pretty
quickly on startup.
There is no logging or live introspection of queue messages.
Change-Id: I496ee01ed68f202c7851bed7e8786cee30df29f5
diff --git a/aos/init.cc b/aos/init.cc
index fdb1800..ac18413 100644
--- a/aos/init.cc
+++ b/aos/init.cc
@@ -14,8 +14,9 @@
#include <malloc.h>
#include "aos/die.h"
-#include "aos/logging/implementations.h"
#include "aos/ipc_lib/shared_mem.h"
+#include "aos/logging/implementations.h"
+#include "aos/realtime.h"
namespace FLAG__namespace_do_not_use_directly_use_DECLARE_double_instead {
extern double FLAGS_tcmalloc_release_rate __attribute__((weak));
@@ -34,25 +35,6 @@
} // namespace logging
namespace {
-void SetSoftRLimit(int resource, rlim64_t soft, bool set_for_root) {
- bool am_root = getuid() == 0;
- if (set_for_root || !am_root) {
- struct rlimit64 rlim;
- if (getrlimit64(resource, &rlim) == -1) {
- PDie("%s-init: getrlimit64(%d) failed",
- program_invocation_short_name, resource);
- }
- rlim.rlim_cur = soft;
- rlim.rlim_max = ::std::max(rlim.rlim_max, soft);
-
- if (setrlimit64(resource, &rlim) == -1) {
- PDie("%s-init: setrlimit64(%d, {cur=%ju,max=%ju}) failed",
- program_invocation_short_name, resource, (uintmax_t)rlim.rlim_cur,
- (uintmax_t)rlim.rlim_max);
- }
- }
-}
-
// Common stuff that needs to happen at the beginning of both the realtime and
// non-realtime initialization sequences. May be called twice.
void InitStart() {
@@ -68,35 +50,11 @@
} // namespace
-void LockAllMemory() {
- // Allow locking as much as we want into RAM.
- SetSoftRLimit(RLIMIT_MEMLOCK, RLIM_INFINITY, false);
-
- InitStart();
- if (mlockall(MCL_CURRENT | MCL_FUTURE) == -1) {
- PDie("%s-init: mlockall failed", program_invocation_short_name);
- }
-
- // Don't give freed memory back to the OS.
- AOS_CHECK_EQ(1, mallopt(M_TRIM_THRESHOLD, -1));
- // Don't use mmap for large malloc chunks.
- AOS_CHECK_EQ(1, mallopt(M_MMAP_MAX, 0));
-
- if (&FLAGS_tcmalloc_release_rate) {
- // Tell tcmalloc not to return memory.
- FLAGS_tcmalloc_release_rate = 0.0;
- }
-
- // Forces the memory pages for all the stack space that we're ever going to
- // use to be loaded into memory (so it can be locked there).
- uint8_t data[4096 * 8];
- // Not 0 because linux might optimize that to a 0-filled page.
- memset(data, 1, sizeof(data));
-
- static const size_t kHeapPreallocSize = 512 * 1024;
- char *const heap_data = static_cast<char *>(malloc(kHeapPreallocSize));
- memset(heap_data, 1, kHeapPreallocSize);
- free(heap_data);
+void InitGoogle(int *argc, char ***argv) {
+ FLAGS_logtostderr = true;
+ google::InitGoogleLogging((*argv)[0]);
+ gflags::ParseCommandLineFlags(argc, argv, true);
+ google::InstallFailureSignalHandler();
}
void InitNRT(bool for_realtime) {
@@ -120,16 +78,6 @@
GoRT(relative_priority);
}
-void InitRT() {
- LockAllMemory();
-
- // Only let rt processes run for 3 seconds straight.
- SetSoftRLimit(RLIMIT_RTTIME, 3000000, true);
-
- // Allow rt processes up to priority 40.
- SetSoftRLimit(RLIMIT_RTPRIO, 40, false);
-}
-
void GoRT(int relative_priority) {
if (ShouldBeRealtime()) {
InitRT();
@@ -155,30 +103,6 @@
aos_core_free_shared_mem();
}
-void WriteCoreDumps() {
- // Do create core files of unlimited size.
- SetSoftRLimit(RLIMIT_CORE, RLIM_INFINITY, true);
-}
-
-void SetCurrentThreadRealtimePriority(int priority) {
- // Make sure we will only be allowed to run for 3 seconds straight.
- SetSoftRLimit(RLIMIT_RTTIME, 3000000, true);
-
- struct sched_param param;
- param.sched_priority = priority;
- if (sched_setscheduler(0, SCHED_FIFO, ¶m) == -1) {
- AOS_PLOG(FATAL, "sched_setscheduler(0, SCHED_FIFO, %d) failed\n", priority);
- }
-}
-
-void UnsetCurrentThreadRealtimePriority() {
- struct sched_param param;
- param.sched_priority = 0;
- if (sched_setscheduler(0, SCHED_OTHER, ¶m) == -1) {
- AOS_PLOG(FATAL, "sched_setscheduler(0, SCHED_OTHER, 0) failed\n");
- }
-}
-
void PinCurrentThreadToCPU(int number) {
cpu_set_t cpuset;
CPU_ZERO(&cpuset);
@@ -186,13 +110,4 @@
AOS_PRCHECK(pthread_setaffinity_np(pthread_self(), sizeof(cpuset), &cpuset));
}
-void SetCurrentThreadName(const ::std::string &name) {
- if (name.size() > 16) {
- AOS_LOG(FATAL, "thread name '%s' too long\n", name.c_str());
- }
- AOS_LOG(INFO, "this thread is changing to '%s'\n", name.c_str());
- AOS_PCHECK(prctl(PR_SET_NAME, name.c_str()));
- logging::internal::ReloadThreadName();
-}
-
} // namespace aos