home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Professional
/
OS2PRO194.ISO
/
os2
/
sysutils
/
ramdisk
/
pdnvdisk.doc
next >
Wrap
Text File
|
1992-01-08
|
7KB
|
174 lines
PDNVDISK version 1.02
8 January, 1992
by: Peter Norberg, Consulting
Compuserve ID 76260, 3355
Phone: (314) 647-8487
The PDNVDISK.SYS subsytem is a simple, prototype OS/2 2.0 VDISK driver,
designed to have a theoretical upper limit of 33 Megabytes of
ram disk available for allocation. It is installed and used
IDENTICALLY to the IBM VDISK driver provided as part of OS/2 2.0,
although it ignores the SECTOR SIZE argument defined by that driver.
The module PDNVDISK.SYS is placed in some convenient subdirectory,
and then is loaded via a DEVICE statement in the CONFIG.SYS file.
NOTE: IT IS STRONGLY RECOMMENDED THAT THE LOAD OF THE PDNVDISK DRIVER
BE THE LAST DEVICE DRIVER LOADED IN THE CONFIG.SYS FILE. Since
it uses up a large amount of fixed memory (the amount requested,
plus some overhead to take into account the FAT and the base
directory), it can cause physical device drivers which actually
need memory in the low 16Meg of RAM to fail to load.
WARNING! THIS DRIVER IS NOT DESIGNED TO OPERATE ON ANY SYSTEM
EXCEPT OS/2 2.0.
If you need a driver for OS/2 1.1 through 1.3, or you need
abilities not present in this driver, please contact the author.
The format of the DEVICE statement is:
DEVICE=<your.path>PDNVDISK.SYS NNNN SSSS DDDD
where all parameters (NNNN, SSSS, DDDD) are optional, and commas may be
used to separate parameters (but are only needed if you want a parameter
to retain its default value). Any value outside of the legal parameter
range maps into the corresponding limit, EXCEPT that 0 maps into the default
value for that parameter.
<your.path> is the drive and path to where PDNVDISK.SYS is stored
NNNN is the number of Kbytes of RAM disk you want to have available
after the allocation and initialization is complete.
16 to 32640 is legal, which maps into
16 * 1024 = 16,384 bytes to
32,640 * 1024 = 33,423,360 bytes
The default value is 64K.
SSSS is a dummy parameter, which matches IBM's Sector Size parameter.
In PDNVDISK, the sector size is fixed at 512 bytes.
DDDD specifies the desired number of directory entries which are
to be reserved. The legal limits are 16 to 1024, and the
actual amount available will be rounded UP to the next
multiple of 16, minus 1 (i.e., the first entry is always
used as the volume label entry, which is PDNVDISKnnn).
WARNING! The test bed computer has only 16 Meg of RAM installed!
This code has never been tested by the author on large
memory machines!
Thank you for being willing to test this code; please IMMEDIATELY post
a message to me at my Compuserve address if you experience any problems!
TECHNICAL DETAILS
PDNVDISK is currently at ALPHA test level. It has been excercised on
one machine (a 16 Meg 486), and found to experience no problems on
any tested size RAM disk from 16K to 12 Meg. It has NOT been tested at each
of the possible RAM disk sizes (I do not have time to reboot the machine
16000 times), nor has it been tested at the 33 Meg (or any value above 12 meg)
levels, despite the specifications, due to the test machine not having enough
memory for such a test.
In its current form, the following Device Driver calls all report
COMMAND errors:
DD_READ_NO_WAIT
DD_QRY_INPUT_STATUS
DD_INPUT_FLUSH
DD_QRY_OUTPUT_STATUS
DD_OUTPUT_FLUSH
DD_DEINSTALL
DD_QRY_COUNT_DRIVES
DD_QRY_LOGICAL_UNIT_MAP
DD_SHUTDOWN
DD_QRY_DRIVER_CAPS
Only 2 DevIoCtl classes are supported:
Categories 8 (disk IOCTL) and 90 (PDN Private)
CAT 8 FUNCTION RESPONSE
0 (Lock Drive) Processed as needed
1 (Unlock Drive) Processed as needed
2 (Redermined Media) Processed as needed
3 (Set Logical Map) OK -- action accepted, no remaps!
4 (Begin Format) ACCESS DENIED
20h (Block Removable) Media is fixed
21h (Get Map) OK -- returns no remaps needed
43h (Set Device Par.) ACCESS DENIED
44h (Write Track) INVALID COMMAND
45h (Format Track) ACCESS DENIED
60h (Media Sense) INVALID COMMAND
63h (Get Device Par) OK -- action performed as needed
64h (Read Track) INVALID COMMAND
65h (Verify Track) OK -- all tracks assumed valid
All other FUNCTION codes within catagory 8 are reported as
INVALID COMMAND.
Category 90h is used privately by the code, as internal
diagnostic control.
Any other DevIoCtl catagory reports INVALID COMMAND.
This program "believes" IBM's documentation, which claims (on page 3-2 of the
preliminary draft of "OS/2 Physical Device Driver Reference", document
number 10G6266, October 30, 1991),
"Note: Unlike the OS/2 Version 1.x operating systems,
the OS/2 Version 2.00 device drivers always execute
in protect mode".
If this statement is NOT true, I would fully expect some combination of
DOS windows to be able to crash the code (my testing has not caused such
a crash, however).
As a design goal, this code should be changed from using DevHlp_AllocPhys
to using DevHlp_VMAlloc (since that gives you greater control over the
memory allocated). As of this version, that implementation remains
elusive.
CHANGES FROM VERSION 1.01
The DevIoctl subsystem should now be responding to everything
which it needs to: that is to say, assuming you don't try to run NORTON
on it to recover lost files, or that you don't try to format the drive,
the subsystem should operate with all well-haved code using normal
I/O requests. It will NOT operate with code which tries to lock the
drive and perform TRACK level I/O, so DISKCOPY and direct sector
inspection utilities are not likely to operate correctly.
An ERROR in 1.01 was detected and corrected. The error caused
a "COMMAND ERROR" to be reported if you tried to access the LAST sector
of the VDISK.
ON A PERSONAL NOTE:
I would also appreciate anyone using this code to send me a message to
tell me their thoughts about it, and to also give me ideas for "real"
products which you need implemented for OS/2 2.0. Although my company
specializes in OS/2 Systems design, Device Drivers, and DSP Real Time
Data Acquisition Control and Processing, any ideas presented to
me will not fall on deaf ears! I appreciate your feedback, and value
any suggestions which you can give me.
Peter Norberg
President
Peter Norberg, Consulting