History

added README

Matthew Veety committed 10 years ago

Commit b4005551 parent b7c0db81 file · +42 −0Browse files

Unified · Split

README+42−0
@@ -0,0 +1,42 @@
1libgio -- Programmable Virtual Files or Streams
2
3Synopsis
4 libgio is a small library to approximate Go's io.Reader and
5 io.Writer interfaces, Common Lisp's grey-streams, and OpenVMS's
6 programmable I/O. libgio takes a struct with the methods to read
7 or write to the stream, open and close the stream, and some other
8 stuff, and returns a libgio file descriptor. You can then use this
9 descriptor to read, write, seek, open, and close the stream. Note
10 that these are not normal file descriptors, but they look like it,
11 and basically feel like it.
12
13struct ReadWriter {
14 RWLock;
15 int (*open)(ReadWriter*);
16 int (*close)(ReadWriter*);
17 long (*pread)(ReadWriter*, void*, long, vlong);
18 long (*pwrite)(ReadWriter*, void*, long, vlong);
19 void *aux;
20 u64int offset;
21 u64int length;
22};
23
24int gopen(ReadWriter*, void *aux)
25 This function takes a ReadWriter struct and auxillary data, and
26 creates a gio file descriptor.
27
28int gclose(int gio_fd)
29 This destroys the gio file descriptor.
30
31long gread(int gio_fd, void *buf, long len, vlong off)
32 This is functionally the same as pread, but operates on a gio fd.
33
34long gwrite(int gio_fd, void *buf, long len, vlong off)
35 This is functionally the same as pwrite, but operates on a gio fd.
36
37vlong gseek(int gio_fd, vlong off, int whence)
38 This is functionally the same as seek but operates on a gio fd.
39
40int fd2gio(int fd)
41 This takes a system fd and returns a gio fd.
42