blob: 27c6d9a8945ffbad857e694a029af31313b75f46 [file] [log] [blame]
#include <errno.h>
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <vm_main.h>
#include <vm_payload.h>
static void signalHandler(int signum) {
if (signum == SIGTERM) {
printf("SIGTERM received.\n");
// Do some clean-up task here.
_exit(1);
} else {
printf("Unexpected signal(%d) received.\n", signum);
}
}
static void setupSignalHandler() {
struct sigaction sa;
sa.sa_handler = &signalHandler;
sa.sa_flags = SA_RESTART;
if (sigaction(SIGTERM, &sa, nullptr) == -1) {
printf("Failed to set signal handler: %s\n", strerror(errno));
}
}
extern "C" int AVmPayload_main() {
// disable buffering to communicate seamlessly
setvbuf(stdin, nullptr, _IONBF, 0);
setvbuf(stdout, nullptr, _IONBF, 0);
setvbuf(stderr, nullptr, _IONBF, 0);
setupSignalHandler();
printf("Hello Microdroid\n");
AVmPayload_notifyPayloadReady();
// Wait forever to allow developer to interact with Microdroid shell
for (;;) {
pause();
}
return 0;
}