1 #include <u.h> 2 #include <libc.h> 3 #include <fcall.h> 4 #include <thread.h> 5 #include <9p.h> 6 7 static void 8 rforker(void (*fn)(void*), void *arg, int flag) 9 { 10 switch(rfork(RFPROC|RFMEM|RFNOWAIT|flag)){ 11 case -1: 12 sysfatal("rfork: %r"); 13 default: 14 return; 15 case 0: 16 fn(arg); 17 _exits(0); 18 } 19 } 20 21 void 22 listensrv(Srv *s, char *addr) 23 { 24 _forker = rforker; 25 _listensrv(s, addr); 26 } 27 28 void 29 postmountsrv(Srv *s, char *name, char *mtpt, int flag) 30 { 31 _forker = rforker; 32 _postmountsrv(s, name, mtpt, flag); 33 } 34 35