just what we need - more rpcs
This commit is contained in:
parent
fdcd298270
commit
57a2289bc9
6 changed files with 111 additions and 16 deletions
21
man/man1/devdraw.1
Normal file
21
man/man1/devdraw.1
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
.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.
|
||||||
53
man/man3/drawfcall.3
Normal file
53
man/man3/drawfcall.3
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
.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)
|
||||||
|
|
@ -382,8 +382,3 @@ is nil, it restores the image to the default arrow.
|
||||||
.IR plumb (3),
|
.IR plumb (3),
|
||||||
.\" .IR cons (3),
|
.\" .IR cons (3),
|
||||||
.IR draw (3)
|
.IR draw (3)
|
||||||
.SH BUGS
|
|
||||||
.I Etimer
|
|
||||||
and
|
|
||||||
.I estart
|
|
||||||
are unimplemented.
|
|
||||||
|
|
|
||||||
|
|
@ -433,7 +433,7 @@ In the kernel,
|
||||||
.I iprint
|
.I iprint
|
||||||
prints to a serial line rather than the screen, for obvious reasons.
|
prints to a serial line rather than the screen, for obvious reasons.
|
||||||
.SH SOURCE
|
.SH SOURCE
|
||||||
.B \*9/src/libdraw
|
.B \*9/src/libmemdraw
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.IR addpt (3),
|
.IR addpt (3),
|
||||||
.IR color (3),
|
.IR color (3),
|
||||||
|
|
@ -448,7 +448,3 @@ prints to a serial line rather than the screen, for obvious reasons.
|
||||||
.I Memimagestring
|
.I Memimagestring
|
||||||
is unusual in using a subfont rather than a font,
|
is unusual in using a subfont rather than a font,
|
||||||
and in having no parameter to align the source.
|
and in having no parameter to align the source.
|
||||||
.PP
|
|
||||||
These functions are
|
|
||||||
archived into
|
|
||||||
.IR libdraw .
|
|
||||||
|
|
|
||||||
|
|
@ -296,14 +296,10 @@ are in compressed image format
|
||||||
(see
|
(see
|
||||||
.IR image (7)).
|
.IR image (7)).
|
||||||
.SH SOURCE
|
.SH SOURCE
|
||||||
.B \*9/src/libdraw
|
.B \*9/src/libmemlayer
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.IR graphics (3),
|
.IR graphics (3),
|
||||||
.IR memdraw (3),
|
.IR memdraw (3),
|
||||||
.IR stringsize (3),
|
.IR stringsize (3),
|
||||||
.IR window (3),
|
.IR window (3),
|
||||||
.IR draw (3)
|
.IR draw (3)
|
||||||
.SH BUGS
|
|
||||||
These functions
|
|
||||||
are archived into
|
|
||||||
.IR libdraw .
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ struct Mux
|
||||||
int (*gettag)(Mux *mux, void *msg);
|
int (*gettag)(Mux *mux, void *msg);
|
||||||
int (*send)(Mux *mux, void *msg);
|
int (*send)(Mux *mux, void *msg);
|
||||||
void *(*recv)(Mux *mux);
|
void *(*recv)(Mux *mux);
|
||||||
|
void *(*nbrecv)(Mux *mux);
|
||||||
void *aux;
|
void *aux;
|
||||||
|
|
||||||
\&... /* private fields follow */
|
\&... /* private fields follow */
|
||||||
|
|
@ -30,6 +31,12 @@ void* muxrpc(Mux *mux, void *request);
|
||||||
.PP
|
.PP
|
||||||
.B
|
.B
|
||||||
void muxprocs(Mux *mux);
|
void muxprocs(Mux *mux);
|
||||||
|
.PP
|
||||||
|
.B
|
||||||
|
Muxrpc* muxrpcstart(Mux *mux, void *request);
|
||||||
|
.PP
|
||||||
|
.B
|
||||||
|
void* muxrpccanfinish(Muxrpc *rpc);
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.I Libmux
|
.I Libmux
|
||||||
is a generic protocol multiplexor.
|
is a generic protocol multiplexor.
|
||||||
|
|
@ -79,14 +86,19 @@ will block until an executing call finishes.
|
||||||
.I settag\fR, \fPgettag
|
.I settag\fR, \fPgettag
|
||||||
Set or get the tag value in a message.
|
Set or get the tag value in a message.
|
||||||
.TP
|
.TP
|
||||||
.I send\fR, \fPrecv
|
.I send\fR, \fPrecv\fR, \fPnbrecv
|
||||||
Send or receive protocol messages on the connection.
|
Send or receive protocol messages on the connection.
|
||||||
.I Recv
|
.I Recv
|
||||||
should block until a message is available and
|
should block until a message is available and
|
||||||
should return nil if the connection is closed.
|
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
|
.I Libmux
|
||||||
will arrange that only one call to
|
will arrange that only one call to
|
||||||
.I recv
|
.I recv
|
||||||
|
or
|
||||||
|
.I nbrecv
|
||||||
is active at a time.
|
is active at a time.
|
||||||
.TP
|
.TP
|
||||||
.I aux
|
.I aux
|
||||||
|
|
@ -130,6 +142,28 @@ either (particularly
|
||||||
blocks an entire proc
|
blocks an entire proc
|
||||||
and there are other threads in the calling proc
|
and there are other threads in the calling proc
|
||||||
that need to remain active.
|
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
|
.SH EXAMPLE
|
||||||
See
|
See
|
||||||
.B \*9/src/lib9pclient/fs.c
|
.B \*9/src/lib9pclient/fs.c
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue