4
* Oliver Fromme <oliver.fromme@heim3.tu-clausthal.de>
5
* Sat Mar 29 04:41:34 MET 1997
7
* This is a stand-alone module which implements a unidirectional,
8
* fast pipe using mmap(). Its primary use is to transfer large
9
* amounts of data from a parent process to its child process,
10
* with a buffer in between which decouples blocking conditions
11
* on both sides. Control information is transferred between the
12
* processes through a socketpair. See xftest.c for an example on
13
* how to use this module.
22
int freeindex; /* [W] next free index */
23
int readindex; /* [R] next index to read */
33
* [W] -- May be written to by the writing process only!
34
* [R] -- May be written to by the reading process only!
35
* All other entries are initialized once.
38
void xfermem_init (txfermem **xf, int bufsize, int msize,int skipbuf);
39
void xfermem_init_writer (txfermem *xf);
40
void xfermem_init_reader (txfermem *xf);
42
int xfermem_write (txfermem *xf, byte *data, int count);
43
int xfermem_read (txfermem *xf, byte *data, int count);
45
int xfermem_get_freespace (txfermem *xf);
46
int xfermem_get_usedspace (txfermem *xf);
47
#define XF_CMD_WAKEUP_INFO 0x04
48
#define XF_CMD_WAKEUP 0x02
49
#define XF_CMD_TERMINATE 0x03
52
int xfermem_getcmd (int fd, int block);
53
int xfermem_putcmd (int fd, byte cmd);
54
int xfermem_block (int fd, txfermem *xf);
56
void xfermem_done (txfermem *xf);
57
#define xfermem_done_writer xfermem_init_reader
58
#define xfermem_done_reader xfermem_init_writer