986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ CDDL HEADER START
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ The contents of this file are subject to the terms of the
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ Common Development and Distribution License (the "License").
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ You may not use this file except in compliance with the License.
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ or http://www.opensolaris.org/os/licensing.
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ See the License for the specific language governing permissions
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ and limitations under the License.
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ When distributing Covered Code, include this CDDL HEADER in each
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ file and include the License file at usr/src/OPENSOLARIS.LICENSE.
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ If applicable, add the following below this CDDL HEADER, with the
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ fields enclosed by brackets "[]" replaced with your own identifying
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ information: Portions Copyright [yyyy] [name of copyright owner]
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ CDDL HEADER END
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ ident "%Z%%M% %I% %E% SMI"
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ Copyright 2007 Sun Microsystems, Inc. All rights reserved.
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\ Use is subject to license terms.
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje\
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setjeid: %Z%%M% %I% %E% SMI
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setjepurpose: simplified ramdisk driver
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setjecopyright: Copyright 2007 Sun Microsystems, Inc. All Rights Reserved
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setjeheaderless
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje" block" device-type
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje" SUNW,ramdisk" encode-string " compatible" property
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje0 instance value current-offset
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje0 value ramdisk-base-va
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje0 value ramdisk-size
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje0 value alloc-size
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje: set-props
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje ramdisk-size encode-int " size" property
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje ramdisk-base-va encode-int " address" property
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje alloc-size encode-int " alloc-size" property
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje;
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setjeset-props
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje: current-va ( -- adr ) ramdisk-base-va current-offset + ;
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setjeexternal
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje: open ( -- okay? )
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje true
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje;
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje: close ( -- )
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje;
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje: seek ( off.low off.high -- error? )
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje drop dup ramdisk-size > if
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje drop true exit ( failed )
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje then
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje to current-offset false ( succeeded )
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje;
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje: read ( addr len -- actual-len )
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje dup current-offset + ( addr len new-off )
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje dup ramdisk-size > if
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje ramdisk-size - - ( addr len' )
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje ramdisk-size ( addr len new-off )
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje then -rot ( new-off addr len )
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje tuck current-va -rot move ( new-off len )
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje swap to current-offset ( len )
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje;
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje: create ( base size alloc-sz -- )
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje to alloc-size
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje to ramdisk-size
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje to ramdisk-base-va
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje set-props
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje;
986fd29a0dc13f7608ef7f508f6e700bd7bc2720setje