Annotation of qemu/roms/SLOF/board-qemu/slof/virtio-fs.fs, revision 1.1.1.1

1.1       root        1: \ *****************************************************************************
                      2: \ * Copyright (c) 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: ." Populating " pwd cr
                     14: 
                     15: s" network" device-type
                     16: 
                     17: 0 VALUE virtfs-rx-buffer
                     18: 0 VALUE virtfs-tx-buffer
                     19: FALSE VALUE initialized?
                     20: 
                     21: 2000 CONSTANT VIRTFS-BUF-SIZE \ 8k
                     22: 
                     23: /vd-len BUFFER: virtiodev
                     24: virtiodev virtio-setup-vd
                     25: 
                     26: \
                     27: \ Support methods.
                     28: 
                     29: : shutdown  ( -- )
                     30:    initialized? 0= IF EXIT THEN
                     31:    virtiodev virtio-fs-shutdown
                     32:    virtfs-rx-buffer VIRTFS-BUF-SIZE free-mem
                     33:    virtfs-tx-buffer VIRTFS-BUF-SIZE free-mem
                     34:    FALSE to initialized?
                     35: ;
                     36: 
                     37: : init  ( -- success )
                     38:    VIRTFS-BUF-SIZE alloc-mem to virtfs-rx-buffer
                     39:    VIRTFS-BUF-SIZE alloc-mem to virtfs-tx-buffer
                     40:    
                     41:    virtiodev                   ( dev )
                     42:    virtfs-tx-buffer            ( dev tx )
                     43:    virtfs-rx-buffer            ( reg tx rx )
                     44:    VIRTFS-BUF-SIZE             ( reg tx rx size )   
                     45:    virtio-fs-init              ( success )
                     46:    
                     47:    dup IF
                     48:       TRUE to initialized?
                     49:       ['] shutdown add-quiesce-xt
                     50:    THEN
                     51: ;
                     52: 
                     53: \
                     54: \ Standard network interface.
                     55: 
                     56: : open  ( -- okay? )
                     57:    open 0= IF false EXIT THEN
                     58:    initialized? 0= IF
                     59:       init 0= IF false EXIT THEN
                     60:    THEN   
                     61:    true
                     62: ;
                     63: 
                     64: : load ( addr -- len )
                     65:    virtiodev swap              ( dev addr )   
                     66:    my-args                     ( dev addr str strlen )
                     67:    1 +         \ hack to make the following allocate 1 more byte
                     68:    \-to-/      \ convert path elements
                     69:    1 - 2dup + 0 swap c! drop
                     70:    virtio-fs-load              ( length )
                     71: ;
                     72: 
                     73: : close  ( -- )
                     74:    initialized? IF
                     75:       shutdown
                     76:    THEN
                     77:    close
                     78: ;
                     79: 
                     80: : ping ( -- )
                     81:    cr s" ping not supported for this device" type cr cr
                     82: ;
                     83: 
                     84: 
                     85: : (set-alias)
                     86:     " virtfs" find-alias 0= IF
                     87:         " virtfs" get-node node>path set-alias
                     88:     ELSE THEN 
                     89: ;
                     90: 
                     91: \
                     92: \ Init the module.
                     93: 
                     94: (set-alias)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.