void replymsg(Wsysmsg *m) { int n; static uchar *mbuf; static int nmbuf; /* T -> R msg */ if(m->type%2 == 0) m->type++; if(trace) fprint(2, "-> %W\n", m); /* copy to output buffer */ n = sizeW2M(m); qlock(&replylock); if(n > nmbuf){ free(mbuf); mbuf = malloc(n); if(mbuf == nil) sysfatal("out of memory"); nmbuf = n; } convW2M(m, mbuf, n); if(write(4, mbuf, n) != n) sysfatal("write: %r"); qunlock(&replylock); }
static Muxrpc* startrpc(int type) { uchar buf[100]; Wsysmsg w; w.type = type; convW2M(&w, buf, sizeof buf); return muxrpcstart(display->mux, buf); }
/* * Reply to m. */ void replymsg(Wsysmsg *m) { int n; /* T -> R msg */ if(m->type%2 == 0) m->type++; /* fprint(2, "-> %W\n", m); */ /* copy to output buffer */ n = sizeW2M(m); if(fdout.wp+n > fdout.ep) sysfatal("out of space for reply message"); convW2M(m, fdout.wp, n); fdout.wp += n; }