diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-01-13 17:25:00 +1100 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-01-19 17:17:50 +1100 |
commit | 44e8d9a57d2e67e5e05d6ae1902eec90db77f752 (patch) | |
tree | fe7c574147648842e89e60cf2cc0e9f61d350a41 /lib/libvirtio/virtio.code | |
parent | ca610c931e2b0004c44f748cb813580b09c60489 (diff) | |
download | SLOF-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.code | 33 |
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 |