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 @@
1+libgio -- Programmable Virtual Files or Streams
2+
3+Synopsis
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+
13+struct 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+
24+int gopen(ReadWriter*, void *aux)
25+ This function takes a ReadWriter struct and auxillary data, and
26+ creates a gio file descriptor.
27+
28+int gclose(int gio_fd)
29+ This destroys the gio file descriptor.
30+
31+long 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+
34+long 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+
37+vlong gseek(int gio_fd, vlong off, int whence)
38+ This is functionally the same as seek but operates on a gio fd.
39+
40+int fd2gio(int fd)
41+ This takes a system fd and returns a gio fd.
42+