[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference noted::hackers_v1

Title:-={ H A C K E R S }=-
Notice:Write locked - see NOTED::HACKERS
Moderator:DIEHRD::MORRIS
Created:Thu Feb 20 1986
Last Modified:Mon Aug 03 1992
Last Successful Update:Fri Jun 06 1997
Number of topics:680
Total number of notes:5456

267.0. "RAM disk info wanted" by DSSDEV::ALDEN (Ken Alden) Wed Jun 25 1986 19:26

    I'm looking for info on using the pseudo disk driver on VMS. Does
    anyone know where I might find it?
    
    Thanks in advance,
    -Ken Alden
    
T.RTitleUserPersonal
Name
DateLines
267.1Is this it?BARAKA::LASTOVICANorm LastovicaWed Jun 25 1986 21:2488
    Hum, sounds familier.  Check this out.  note that any referance
    to mscp serving is a myth at this time.  Send me mail if you want
    the rest.  putting the source in the notes file was a mistake (I
    changed the code).






                             FDDRIVER.MEM

                             11-Jun-1986







          NOTE:  This tool  is  an  in  house,  experimental

          program for your use on Digital internal machines.









     FDDRIVER implements  a  memory  based  pseudo  disk  for  VAX/VMS

systems.  It has been shown to run on VMS V4.4 although any version of

VMS after 4.0 should be able to run FDDRIVER with  no  problems.   The

primary  advantage  of  a  memory based disk is that there are no disk

latency times involved and all transfers happen at CPU  speed.   Files

that  are  often  accessed can benefit greatly from this driver due to

the performance gains over a physical disk.



     Background on the driver as it exists can be found by looking  at

SYS$UPDATE:STABACKIT.COM  as  distributed with VMS V4.4.  Basically, a

chunk (user specified size) of  nonpaged  pool  is  allocated  by  the

driver  (with  a  QIO format command to the driver).  Then, the "disk"

can be initialized, mounted, and accessed as a real disk device.   The

original  PDDRIVER (that this code is stolen from) used a loop in IOC$

routines to perform byte transfers to and from the  user's  buffer  at

fork  IPL.   Needless  to  say, there is significant overhead in doing

things this way.



     And, as can be guessed, this new version does MOVC3 transfers  of

up  to  one  page  at a time.  One page at a time is the current limit

because a single mapping register is used to  map  the  user's  buffer

into system space.  The data transfer happens at elevated IPL, so this

mapping is required.  A special case  is  the  first  page  where  the

buffer  may  start  at  a non page boundary and could be less than one

page long.



     Contained are three pieces of code.  The first program is  called

FDSETSIZE.MAR and is used to tell the driver how much pool to allocate

(remember, 1 page is 512 bytes of nonpaged pool).  This program  would

be run once after the driver is loaded.  The next piece of code is the

driver proper (FDDRIVER.MAR).  It is assembled  and  linked  and  then

loaded  with  SYSGEN.  Finally, FDDRIVERSTARTUP.COM can be called from

SYSTARTUP.COM to load the driver, configure the device and mount it.



     Operation typically will procede as follows:  Once the driver  is

loaded,  the  set  size  program is run.  The user is prompted for the

need device size in  pages.   Assuming  sufficient  nonpaged  pool  is

available,  the  pool is allocated and the program returns to DCL.  If

memory is not available, the driver returns an error and the device is

left  with no pages.  After the device is sized, it may be accessed as

any other disk device.  The device may be set MSCP served before it is

mounted if needed.


                                                                Page 2





     As far as I know this code is safe.  It has not crashed a  system

in  quite a while of active use.  But, given the choice, I'd make your

initial tests on a little used machine or after hours...



     Release notes:



     11-Jun-1986:  This version implements two  changes:   First,  the

device  may  not  be  formatted  with  the  format command while it is

mounted.  This helps prevent system crashes when the device is resized

while  mounted.   Second,  the device type is changed from RX01 to FD8

(foreign disk type  8).  This change allows the device to be set  MSCP

served.  The SET DEVICE/SERVED code excludes RX01's, RX02's and RX04's

(don't as me).



     Please let me know if you find changes to be made (ie.  make them

and let me know).  Good luck!







        Norman Lastovica

        Customer Support Center/Colorado Springs - TSSG

        DUNE::LASTOVICA

        CX03 1/M12

    
267.2Thanks!DSSDEV::ALDENKen AldenThu Jun 26 1986 20:203
    Thanks Norm, that looks like what I was looking for.
    
    -Ken