|
|
1.1 ! root 1: /****************************************************************************** ! 2: * Copyright (c) 2004, 2011 IBM Corporation ! 3: * All rights reserved. ! 4: * This program and the accompanying materials ! 5: * are made available under the terms of the BSD License ! 6: * which accompanies this distribution, and is available at ! 7: * http://www.opensource.org/licenses/bsd-license.php ! 8: * ! 9: * Contributors: ! 10: * IBM Corporation - initial implementation ! 11: *****************************************************************************/ ! 12: ! 13: #include <virtio.h> ! 14: #include <virtio-blk.h> ! 15: #include <virtio-9p.h> ! 16: ! 17: /******** core virtio ********/ ! 18: ! 19: // : virtio-vring-size ( queuesize -- ringsize ) ! 20: PRIM(virtio_X2d_vring_X2d_size) ! 21: TOS.u = virtio_vring_size(TOS.u); ! 22: MIRP ! 23: ! 24: // : virtio-get-qsize ( dev queue -- queuesize ) ! 25: PRIM(virtio_X2d_get_X2d_qsize) ! 26: int queue = TOS.u; POP; ! 27: TOS.u = virtio_get_qsize(TOS.a, queue); ! 28: MIRP ! 29: ! 30: // : virtio-get-config ( dev offset size -- val ) ! 31: PRIM(virtio_X2d_get_X2d_config) ! 32: int size = TOS.u; POP; ! 33: int offset = TOS.u; POP; ! 34: TOS.u = virtio_get_config(TOS.a, offset, size); ! 35: MIRP ! 36: ! 37: /******** virtio-blk ********/ ! 38: ! 39: // : virtio-blk-init ( dev -- ) ! 40: PRIM(virtio_X2d_blk_X2d_init) ! 41: void *dev = TOS.a; POP; ! 42: virtioblk_init(dev); ! 43: MIRP ! 44: ! 45: // : virtio-blk-shutdown ( dev -- ) ! 46: PRIM(virtio_X2d_blk_X2d_shutdown) ! 47: void *dev = TOS.a; POP; ! 48: virtioblk_shutdown(dev); ! 49: MIRP ! 50: ! 51: // : virtio-blk-read ( dev blkno cnt reg -- #read ) ! 52: PRIM(virtio_X2d_blk_X2d_read) ! 53: void *dev = TOS.a; POP; ! 54: long cnt = TOS.n; POP; ! 55: long blkno = TOS.n; POP; ! 56: void *buf = TOS.a; ! 57: TOS.n = virtioblk_read(dev, buf, blkno, cnt); ! 58: MIRP ! 59: ! 60: /******** virtio-fs ********/ ! 61: ! 62: // : virtio-fs-init ( dev tx rx size -- success ) ! 63: PRIM(virtio_X2d_fs_X2d_init) ! 64: int size = TOS.n; POP; ! 65: void *rx = TOS.a; POP; ! 66: void *tx = TOS.a; POP; ! 67: void *dev = TOS.a; ! 68: ! 69: TOS.n = virtio_9p_init(dev, tx, rx, size) == 0 ? -1 : 0; ! 70: MIRP ! 71: ! 72: // : virtio-fs-shutdown ( dev -- ) ! 73: PRIM(virtio_X2d_fs_X2d_shutdown) ! 74: void *dev = TOS.a; POP; ! 75: ! 76: virtio_9p_shutdown(dev); ! 77: MIRP ! 78: ! 79: // : virtio-fs-load ( dev buf str -- #read ) ! 80: PRIM(virtio_X2d_fs_X2d_load) ! 81: char *str = TOS.a; POP; ! 82: void *buf = TOS.a; POP; ! 83: void *dev = TOS.a; ! 84: ! 85: TOS.n = virtio_9p_load(dev, str, buf); ! 86: MIRP
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.