aboutsummaryrefslogtreecommitdiffstats
path: root/roms/SLOF/board-qemu/slof/virtio-fs.fs
diff options
context:
space:
mode:
authorAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
committerAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
commitaf1a266670d040d2f4083ff309d732d648afba2a (patch)
tree2fc46203448ddcc6f81546d379abfaeb323575e9 /roms/SLOF/board-qemu/slof/virtio-fs.fs
parente02cda008591317b1625707ff8e115a4841aa889 (diff)
Add submodule dependency filesHEADmaster
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'roms/SLOF/board-qemu/slof/virtio-fs.fs')
-rw-r--r--roms/SLOF/board-qemu/slof/virtio-fs.fs95
1 files changed, 95 insertions, 0 deletions
diff --git a/roms/SLOF/board-qemu/slof/virtio-fs.fs b/roms/SLOF/board-qemu/slof/virtio-fs.fs
new file mode 100644
index 000000000..3898d0b7d
--- /dev/null
+++ b/roms/SLOF/board-qemu/slof/virtio-fs.fs
@@ -0,0 +1,95 @@
+\ *****************************************************************************
+\ * 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
+
+virtio-setup-vd VALUE virtiodev
+
+\
+\ 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)