#include #include #include #include #include int main(int argc, char *argv[], char *envp[]) { // Set the marionette thread ID before using any ComponentThread functionality spinscale::setMarionetteThreadId(smo::SmoThreadId::MRNTT); pthread_setname_np(pthread_self(), "smo:CRT:main"); /* We don't do anything inside of main() * Main merely waits for the marionette thread to exit. */ std::cout << "CRT:" << __func__ << ": about to JOLT Mrntt with cmdline args" << '\n'; smo::mrntt::thread->getIoService().post( [argc, argv, envp]() { std::cout << "Mrntt:" << __func__ << ":JOLTED: setting cmdline args" << '\n'; smo::CrtCommandLineArgs::set(argc, argv, envp); smo::mrntt::thread->getIoService().stop(); } ); smo::mrntt::thread->thread.join(); std::cout << "CRT:" << __func__ << ": Mrntt exited with code '" << smo::mrntt::exitCode << "'\n"; return smo::mrntt::exitCode; }