commit - fdcd298270b54de80852cce7668357107bc0ddb9
commit + 57a2289bc9a9427e12a5e8101591ae8f49fc87bc
blob - /dev/null
blob + 2bdf0d92b034c82b4c6d9362a8d3a18028ce08b9 (mode 644)
--- /dev/null
+++ man/man1/devdraw.1
+.TH DEVDRAW 1
+.SH NAME
+devdraw \- draw device simulator
+.SH SYNOPSIS
+invoked via
+.I initdraw
+(see
+.IR graphics (3))
+.SH DESCRIPTION
+.I Devdraw
+XXX
+.SH SOURCE
+.B \*9/src/cmd/devdraw
+.SH "SEE ALSO
+.IR draw (3),
+.IR drawfcall (3),
+.IR graphics (3)
+.SH BUGS
+.I Devdraw
+should probably present a standard 9P server
+instead of using its own protocol.
blob - /dev/null
blob + c22fe7474dfcd33d38c604c1ab96c7ca054048c0 (mode 644)
--- /dev/null
+++ man/man3/drawfcall.3
+.TH DRAWFCALL
+.SH NAME
+convM2W, convW2M, drawfcallfmt, readwsysmsg, sizeW2M \- window system protocol
+.SH SYNOPSIS
+.nf
+.PP
+.ft L
+#include <u.h>
+#include <libc.h>
+#include <draw.h>
+#include <mouse.h>
+#include <cursor.h>
+#include <drawfcall.h>
+.ft P
+.ta \w'\fLuint 'u
+.PP
+.B
+uint convM2W(uchar *ap, uint nap, Wsysmsg *w)
+.PP
+.B
+uint convW2M(Wsysmsg *w, uchar *ap, uint nap)
+.PP
+.B
+int drawfcallfmt(Fmt*)
+.PP
+.B
+int readwsysmsg(int fd, uchar *buf, uint nbuf)
+.PP
+.B
+uint sizeW2M(Wsysmsg *w)
+.SH DESCRIPTION
+These routines are analogues of the routines described in
+.IR fcall (3).
+They manipulate graphics device protocol messages
+rather than 9P protocol messages.
+The graphics device protocol is used for internal
+communication between the
+.IR devdraw (1)
+graphics server
+and the
+.IR draw (3)
+library.
+A
+.B Wsysmsg
+is the C structure corresponding to a protocol message.
+.PP
+The protocol is intentionally undocumented and may change.
+.SH SOURCE
+.B \*9/src/libdraw/drawfcall.c
+.SH SEE ALSO
+.IR devdraw (1),
+.IR draw (3),
+.IR graphics (3)
blob - 1a365389f487ec7d6ab0e19cdf37b66661ec0dee
blob + 5991a17d36d6f578eaa26805307b68b43b07de54
--- man/man3/event.3
+++ man/man3/event.3
.IR plumb (3),
.\" .IR cons (3),
.IR draw (3)
-.SH BUGS
-.I Etimer
-and
-.I estart
-are unimplemented.
blob - ec299a257c21e38ef9c239379ab7038524e1cb96
blob + 3f6c483ef8fd252c956ff822c21f8884449b6790
--- man/man3/memdraw.3
+++ man/man3/memdraw.3
.I iprint
prints to a serial line rather than the screen, for obvious reasons.
.SH SOURCE
-.B \*9/src/libdraw
+.B \*9/src/libmemdraw
.SH SEE ALSO
.IR addpt (3),
.IR color (3),
.I Memimagestring
is unusual in using a subfont rather than a font,
and in having no parameter to align the source.
-.PP
-These functions are
-archived into
-.IR libdraw .
blob - da1d025bbfc1a8d9fa7c07362a016d9cde5f3f7a
blob + a40efdc7aaf19b04485df7c44ebe307794d4713d
--- man/man3/memlayer.3
+++ man/man3/memlayer.3
(see
.IR image (7)).
.SH SOURCE
-.B \*9/src/libdraw
+.B \*9/src/libmemlayer
.SH SEE ALSO
.IR graphics (3),
.IR memdraw (3),
.IR stringsize (3),
.IR window (3),
.IR draw (3)
-.SH BUGS
-These functions
-are archived into
-.IR libdraw .
blob - f83da56357d6423d0e090ab07216df0ae6a415b1
blob + caaf55fffc752246d6c4bc4fd3216024fcb8fd99
--- man/man3/mux.3
+++ man/man3/mux.3
int (*gettag)(Mux *mux, void *msg);
int (*send)(Mux *mux, void *msg);
void *(*recv)(Mux *mux);
+ void *(*nbrecv)(Mux *mux);
void *aux;
\&... /* private fields follow */
.PP
.B
void muxprocs(Mux *mux);
+.PP
+.B
+Muxrpc* muxrpcstart(Mux *mux, void *request);
+.PP
+.B
+void* muxrpccanfinish(Muxrpc *rpc);
.SH DESCRIPTION
.I Libmux
is a generic protocol multiplexor.
.I settag\fR, \fPgettag
Set or get the tag value in a message.
.TP
-.I send\fR, \fPrecv
+.I send\fR, \fPrecv\fR, \fPnbrecv
Send or receive protocol messages on the connection.
.I Recv
should block until a message is available and
should return nil if the connection is closed.
+.I Nbrecv
+should not block; it returns nil if there is no
+message available to be read.
.I Libmux
will arrange that only one call to
.I recv
+or
+.I nbrecv
is active at a time.
.TP
.I aux
blocks an entire proc
and there are other threads in the calling proc
that need to remain active.
+.PP
+.I Libmux
+also provides a non-blocking interface, useful for programs forced
+to use a
+.IR select (2)-based
+main loop.
+.I Muxrpcstart
+runs the first half of
+.IR muxrpc :
+it assigns a tag and sends the request,
+but does not wait for the reply.
+Instead it returns a pointer to a
+.B Muxrpc
+structure that represents the in-progress call.
+.I Muxrpccanfinish
+checks whether the given call
+can finish.
+If no mux procs have been started,
+.I muxrpccanfinish
+may call
+.I nbrecv
+to poll for newly arrived responses.
.SH EXAMPLE
See
.B \*9/src/lib9pclient/fs.c