diff options
Diffstat (limited to 'qemu/roms/SLOF/board-qemu/slof/virtio-fs.fs')
-rw-r--r-- | qemu/roms/SLOF/board-qemu/slof/virtio-fs.fs | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/qemu/roms/SLOF/board-qemu/slof/virtio-fs.fs b/qemu/roms/SLOF/board-qemu/slof/virtio-fs.fs new file mode 100644 index 000000000..8632b465f --- /dev/null +++ b/qemu/roms/SLOF/board-qemu/slof/virtio-fs.fs @@ -0,0 +1,96 @@ +\ ***************************************************************************** +\ * Copyright (c) 2011 IBM Corporation +\ * All rights reserved. +\ * This program and the accompanying materials +\ * are made available under the terms of the BSD License +\ * which accompanies this distribution, and is available at +\ * http://www.opensource.org/licenses/bsd-license.php +\ * +\ * Contributors: +\ * IBM Corporation - initial implementation +\ ****************************************************************************/ + +." Populating " pwd cr + +s" network" device-type + +0 VALUE virtfs-rx-buffer +0 VALUE virtfs-tx-buffer +FALSE VALUE initialized? + +2000 CONSTANT VIRTFS-BUF-SIZE \ 8k + +/vd-len BUFFER: virtiodev +virtiodev virtio-setup-vd + +\ +\ Support methods. + +: shutdown ( -- ) + initialized? 0= IF EXIT THEN + virtiodev virtio-fs-shutdown + virtfs-rx-buffer VIRTFS-BUF-SIZE free-mem + virtfs-tx-buffer VIRTFS-BUF-SIZE free-mem + FALSE to initialized? +; + +: init ( -- success ) + VIRTFS-BUF-SIZE alloc-mem to virtfs-rx-buffer + VIRTFS-BUF-SIZE alloc-mem to virtfs-tx-buffer + + virtiodev ( dev ) + virtfs-tx-buffer ( dev tx ) + virtfs-rx-buffer ( reg tx rx ) + VIRTFS-BUF-SIZE ( reg tx rx size ) + virtio-fs-init ( success ) + + dup IF + TRUE to initialized? + ['] shutdown add-quiesce-xt + THEN +; + +\ +\ Standard network interface. + +: open ( -- okay? ) + open 0= IF false EXIT THEN + initialized? 0= IF + init 0= IF false EXIT THEN + THEN + true +; + +: load ( addr -- len ) + virtiodev swap ( dev addr ) + my-args ( dev addr str strlen ) + 1 + \ hack to make the following allocate 1 more byte + \-to-/ \ convert path elements + 1 - 2dup + 0 swap c! drop + virtio-fs-load ( length ) +; + +: close ( -- ) + initialized? IF + shutdown + THEN + close +; + +: ping ( -- ) + cr s" ping not supported for this device" type cr cr +; + + +: (set-alias) + " virtfs" find-alias 0= IF + " virtfs" get-node node>path set-alias + ELSE + drop + THEN +; + +\ +\ Init the module. + +(set-alias) |