diff options
author | Avik Sil <aviksil@linux.vnet.ibm.com> | 2013-09-23 14:07:35 +0530 |
---|---|---|
committer | Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> | 2013-10-04 12:00:13 +0530 |
commit | 46a32aa9c74be70b7f247f4aae00951755784973 (patch) | |
tree | 864720ec001977fcd2e310735f02e70c6a0c747d /lib/libvirtio/virtio.code | |
parent | eb5994df206de4b36501a978c00309962d6dd3f5 (diff) | |
download | SLOF-46a32aa9c74be70b7f247f4aae00951755784973.zip SLOF-46a32aa9c74be70b7f247f4aae00951755784973.tar.gz SLOF-46a32aa9c74be70b7f247f4aae00951755784973.tar.bz2 |
Add virtio-net driver in libvirtio
Signed-off-by: Avik Sil <aviksil@linux.vnet.ibm.com>
Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
Diffstat (limited to 'lib/libvirtio/virtio.code')
-rw-r--r-- | lib/libvirtio/virtio.code | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/libvirtio/virtio.code b/lib/libvirtio/virtio.code index 9c50c92..304849e 100644 --- a/lib/libvirtio/virtio.code +++ b/lib/libvirtio/virtio.code @@ -14,6 +14,7 @@ #include <virtio-blk.h> #include <virtio-9p.h> #include <virtio-scsi.h> +#include <virtio-net.h> /******** core virtio ********/ @@ -119,3 +120,45 @@ PRIM(virtio_X2d_scsi_X2d_send) TOS.n = virtioscsi_send(dev, req, resp, is_read, buf, blen); MIRP +/******** virtio-net ********/ + +// : virtio-net-open ( mac-addr-str len dev -- false | [ driver true ] ) +PRIM(virtio_X2d_net_X2d_open) +{ + void *dev = TOS.a; POP; + int len = TOS.u; POP; + char *mac_addr = TOS.a; + + net_driver_t *net_driver = virtionet_open(mac_addr, len, dev); + + if (net_driver) { + TOS.u = (unsigned long)net_driver; PUSH; + TOS.n = -1; + } else + TOS.n = 0; +} +MIRP + +// : virtio-net-close ( driver -- ) +PRIM(virtio_X2d_net_X2d_close) +{ + net_driver_t *driver = TOS.a; POP; + virtionet_close(driver); +} +MIRP + +// : virtio-net-read ( addr len -- actual ) +PRIM(virtio_X2d_net_X2d_read) +{ + int len = TOS.u; POP; + TOS.n = virtionet_read(TOS.a, len); +} +MIRP + +// : virtio-net-write ( addr len -- actual ) +PRIM(virtio_X2d_net_X2d_write) +{ + int len = TOS.u; POP; + TOS.n = virtionet_write(TOS.a, len); +} +MIRP |