shithub: riscv

ref: f777743b7242e539a8ac806e4e15c4b527be4bb6
dir: /sys/man/2/9pqueue/

View raw version
.TH 9PQUEUE 2
.SH NAME
Reqqueue,
reqqueuecreate,
reqqueuepush,
reqqueueflush \- deferred processing of 9P requests
.SH SYNOPSIS
.ft L
.nf
#include <u.h>
#include <libc.h>
#include <fcall.h>
#include <thread.h>
#include <9p.h>
.fi
.PP
.ft L
.nf
.ta \w'\fLFile 'u
struct Reqqueue
{
	\fI...\fP
};
.fi
.PP
.ft L
.nf
.ta \w'\fLReaddir* 'u +4n +4n
Reqqueue*	reqqueuecreate(void);
void		reqqueuepush(Reqqueue *q, Req *r, void (*f)(Req *));
void		reqqueueflush(Reqqueue *q, Req *r);
void		reqqueuefree(Reqqueue *q);
.fi
.SH DESCRIPTION
.I Reqqueue
provides routines for deferred processing of 9p request in
multithreaded 9p servers.
.PP
The
.I reqqueuecreate
function spawns a process for handling requests returning
a pointer to the
.I Reqqueue
structure allocated.
.PP
To schedule a request to be processed on a queue,
.I reqqueuepush
is called with request
.I r
and its handler function
.IR f .
.PP
A previously submitted request can be flushed from a queue
by
.I reqqueueflush
which will remove the request immediately if processing has
not started. If processing has been started, the process
will be interrupted.
.PP
.I Reqqueuefree
frees a queue.
No new requests should be send to the queue and it will be freed once all requests in it have been processed.
.SH SOURCE
.B /sys/src/lib9p/queue.c
.SH SEE ALSO
.IR 9p (2)