aboutsummaryrefslogtreecommitdiff
path: root/lib/libvirtio/virtio.code
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2012-01-13 17:25:00 +1100
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2012-01-19 17:17:50 +1100
commit44e8d9a57d2e67e5e05d6ae1902eec90db77f752 (patch)
treefe7c574147648842e89e60cf2cc0e9f61d350a41 /lib/libvirtio/virtio.code
parentca610c931e2b0004c44f748cb813580b09c60489 (diff)
downloadSLOF-44e8d9a57d2e67e5e05d6ae1902eec90db77f752.zip
SLOF-44e8d9a57d2e67e5e05d6ae1902eec90db77f752.tar.gz
SLOF-44e8d9a57d2e67e5e05d6ae1902eec90db77f752.tar.bz2
Add virtfs support
Code originally written by Timothy Rule and reworked & bug fixed by myself Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'lib/libvirtio/virtio.code')
-rw-r--r--lib/libvirtio/virtio.code33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/libvirtio/virtio.code b/lib/libvirtio/virtio.code
index 0ed3dc7..65e1d8a 100644
--- a/lib/libvirtio/virtio.code
+++ b/lib/libvirtio/virtio.code
@@ -12,6 +12,9 @@
#include <virtio.h>
#include <virtio-blk.h>
+#include <virtio-9p.h>
+
+/******** core virtio ********/
// : virtio-vring-size ( queuesize -- ringsize )
PRIM(virtio_X2d_vring_X2d_size)
@@ -31,6 +34,8 @@ PRIM(virtio_X2d_get_X2d_config)
TOS.u = virtio_get_config(TOS.a, offset, size);
MIRP
+/******** virtio-blk ********/
+
// : virtio-blk-init ( dev -- )
PRIM(virtio_X2d_blk_X2d_init)
void *dev = TOS.a; POP;
@@ -51,3 +56,31 @@ PRIM(virtio_X2d_blk_X2d_read)
void *buf = TOS.a;
TOS.n = virtioblk_read(dev, buf, blkno, cnt);
MIRP
+
+/******** virtio-fs ********/
+
+// : virtio-fs-init ( dev tx rx size -- success )
+PRIM(virtio_X2d_fs_X2d_init)
+ int size = TOS.n; POP;
+ void *rx = TOS.a; POP;
+ void *tx = TOS.a; POP;
+ void *dev = TOS.a;
+
+ TOS.n = virtio_9p_init(dev, tx, rx, size) == 0 ? -1 : 0;
+MIRP
+
+// : virtio-fs-shutdown ( dev -- )
+PRIM(virtio_X2d_fs_X2d_shutdown)
+ void *dev = TOS.a; POP;
+
+ virtio_9p_shutdown(dev);
+MIRP
+
+// : virtio-fs-load ( dev buf str -- #read )
+PRIM(virtio_X2d_fs_X2d_load)
+ char *str = TOS.a; POP;
+ void *buf = TOS.a; POP;
+ void *dev = TOS.a;
+
+ TOS.n = virtio_9p_load(dev, str, buf);
+MIRP