#include <cstdio> #include <sys/wait.h> #include <signal.h> #include "miosix.h" #include "kernel/process.h" #include "app_template/prog3.h" using namespace std; using namespace miosix; void ledThread(void *) { for(;;) { ledOn(); Thread::sleep(200); ledOff(); Thread::sleep(200); } } int main() { Thread::create(ledThread,STACK_MIN); ElfProgram prog(reinterpret_cast<const unsigned int*>(main_elf),main_elf_len); for(;;) { getchar(); Process::create(prog); int ec; pid_t pid=Process::wait(&ec); iprintf("Process %d terminated\n",pid); if(WIFEXITED(ec)) { iprintf("Exit code is %d\n",WEXITSTATUS(ec)); } else if(WIFSIGNALED(ec)) { if(WTERMSIG(ec)==SIGSEGV) iprintf("Process segfaulted\n"); } } }