1*11f923c4Spooka /* $NetBSD: h_simpleserver.c,v 1.4 2016/01/25 12:21:42 pooka Exp $ */ 21a076ae9Spooka 31a076ae9Spooka #include <sys/types.h> 41a076ae9Spooka 51a076ae9Spooka #include <rump/rump.h> 61a076ae9Spooka 71a076ae9Spooka #include <err.h> 8*11f923c4Spooka #include <stdbool.h> 91a076ae9Spooka #include <stdio.h> 101a076ae9Spooka #include <stdlib.h> 111a076ae9Spooka #include <string.h> 121a076ae9Spooka #include <unistd.h> 131a076ae9Spooka 141a076ae9Spooka #include "../../kernspace/kernspace.h" 151a076ae9Spooka 161a076ae9Spooka #define NOFAIL(e) do { int rv = e; if (rv) err(1, #e); } while (/*CONSTCOND*/0) 171a076ae9Spooka 181a076ae9Spooka struct { 191a076ae9Spooka const char *str; 201a076ae9Spooka void (*dofun)(char *); 211a076ae9Spooka } actions[] = { 221a076ae9Spooka { "sendsig", rumptest_sendsig }, 231a076ae9Spooka }; 241a076ae9Spooka 251a076ae9Spooka int main(int argc,char * argv[])261a076ae9Spookamain(int argc, char *argv[]) 271a076ae9Spooka { 281a076ae9Spooka unsigned i; 291a076ae9Spooka bool match; 301a076ae9Spooka 311a076ae9Spooka if (argc < 2) 321a076ae9Spooka exit(1); 331a076ae9Spooka 341a076ae9Spooka NOFAIL(rump_daemonize_begin()); 351a076ae9Spooka NOFAIL(rump_init()); 361a076ae9Spooka NOFAIL(rump_init_server(argv[1])); 371a076ae9Spooka NOFAIL(rump_daemonize_done(RUMP_DAEMONIZE_SUCCESS)); 381a076ae9Spooka 391a076ae9Spooka if (argc > 2) { 401a076ae9Spooka char *arg = NULL; 411a076ae9Spooka 421a076ae9Spooka if (argc == 4) 431a076ae9Spooka arg = argv[3]; 441a076ae9Spooka 451a076ae9Spooka for (i = 0; i < __arraycount(actions); i++) { 461a076ae9Spooka if (strcmp(actions[i].str, argv[2]) == 0) { 471a076ae9Spooka rump_schedule(); 481a076ae9Spooka actions[i].dofun(arg); 491a076ae9Spooka rump_unschedule(); 501a076ae9Spooka match = true; 511a076ae9Spooka } 521a076ae9Spooka } 531a076ae9Spooka 541a076ae9Spooka if (!match) { 551a076ae9Spooka exit(1); 561a076ae9Spooka } 571a076ae9Spooka pause(); 581a076ae9Spooka } else { 591a076ae9Spooka for (;;) 601a076ae9Spooka pause(); 611a076ae9Spooka } 621a076ae9Spooka 631a076ae9Spooka return 0; 641a076ae9Spooka } 65