summaryrefslogtreecommitdiff
path: root/sys/include
diff options
context:
space:
mode:
authorMatthew Veety <mveety@mveety.com>2016-02-09 16:24:41 -0500
committerMatthew Veety <mveety@mveety.com>2016-02-09 16:24:41 -0500
commita54782d69b31f3eaeb77a8087016065790c200bb (patch)
tree5f2b06b172f5b58e39321e5d762a162a205cd178 /sys/include
parent9c3de0c87a00e09e8a51d7f6de461a0221c6409b (diff)
Imported ngfs libgio. This is a library to create virtual file descriptors, similar to common lisp grey-streams or golang's io.Reader/io.Writer. Now 95% bug-free.
Diffstat (limited to 'sys/include')
-rw-r--r--sys/include/gio.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/sys/include/gio.h b/sys/include/gio.h
new file mode 100644
index 000000000..825b57d80
--- /dev/null
+++ b/sys/include/gio.h
@@ -0,0 +1,24 @@
+#pragma lib "libgio.a"
+#pragma src "/sys/src/libgio"
+
+typedef struct ReadWriter ReadWriter;
+
+struct ReadWriter {
+ RWLock;
+ int (*open)(ReadWriter*);
+ int (*close)(ReadWriter*);
+ long (*pread)(ReadWriter*, void*, long, vlong);
+ long (*pwrite)(ReadWriter*, void*, long, vlong);
+ void *aux;
+ u64int offset;
+ u64int length;
+};
+
+ReadWriter* getrdstruct(int);
+int gopen(ReadWriter*, void*);
+int gclose(int);
+long gread(int, void*, long, vlong);
+long gwrite(int, void*, long, vlong);
+vlong gseek(int, vlong, int);
+int fd2gio(int);
+