devb-ram

Driver for RAM disk interface (QNX Neutrino)

Note: You must be root to start this driver.

Syntax:

devb-ram [cam option[,option]...]
         [disk option[,option]...] 
         [ram option[,option]...]
         [blk option[,option]...] &

Runs on:

QNX Neutrino

Options:

Note: Use commas (,) to separate the options. You can put the cam, disk, ram, and blk groups of options in any order.
cam options
The cam options control the common access methods:
quiet
Be quiet: don't display any information on startup.
verbose
Be verbose.
disk options
The disk options control the driver's interface to cam-disk.so. If specified, they must follow the disk keyword. For more information, see cam-disk.so.
ram options
The ram options control the driver's interface to RAM:
address=addr
The physical address to overlay. The default is not to overlay.
blksize=size
Set the sector size. The default is 512 bytes.
capacity=blocks
Specify the capacity of the RAM drive in the blocks of the size specified by the blksize option. The default is 4096 blocks (2 MB).
nodinit
Don't partition the RAM disk or format a QNX 4 filesystem on it.
blk options
The blk options control io-blk.so. These options must follow the blk keyword and must be specified after any general or disk options. For more information, see io-blk.so.

Description:

The devb-ram driver creates a RAM disk interface. When the capacity option isn't specified, devb-ram creates a 2 MB RAM disk.

By default, devb-ram partitions the RAM disk, leaving one block for the partition table itself, and making the remainder of the RAM disk (capacity minus 1) a t77 partition, which it then initializes (internally, not by spawning dinit) to have a blank fs-qnx4.so filesystem on it. If you specify the nodinit option, you can later manually format it, optionally partition the RAM disk with fdisk (but you can make the whole thing a filesystem), and then mount it.

Note: By default, io-blk.so allocates 15% of system RAM for cache. The devb-ram system looks like a disk drive to io-blk.so, so it doesn't know that the cache is unnecessary. You should use the blk cache=512k option to reduce the cache size to the minimum.

Because devb-ram is a block device which reads from and writes to RAM, its operations go through a lot of layers before they actually get to RAM. For a RAM disk with better performance, use the blk ramdisk=... option to io-blk.so. For more information, see "RAM disks" in the Connecting Hardware chapter of the QNX Neutrino User's Guide.

Examples:

Create a 4 MB RAM drive:

devb-ram ram capacity=8192 &

Files:

The devb-ram driver causes io-blk.so to adopt various block special devices under /dev. These devices are normally named hdn, where n is the physical unit number of the device.

This driver could also require the following shared objects:

Binary Required
cam-disk.so For RAM disk access.
libcam.so Always

Exit status:

The devb-ram driver terminates only if an error occurs during startup, or if it has successfully forked itself upon startup because it hadn't been initially started in the background.

0
The devb-ram driver wasn't started in the background and therefore forked itself. The original process terminated with a zero exit status, the forked process continued.
> 0
An error occurred during startup.

Caveats:

While there's no limit to the size of a disk or partition, the limit on I/O (i.e., the lseek(), read() and write() functions) depends on the type of filesystem mounted and on whether you use the 32- or 64-bit versions of these functions. This I/O limit has no effect on the partition size for mounted filesystems. The maximum number of blocks is 232.

Known supported functions include:

chmod(), chown(), close(), closedir(), creat(), devctl(), dup(), dup2(), fcntl(), fpathconf(), fstat(), lseek(), mkdir(), mkfifo(), mknod(), open(), opendir(), pathconf(), read(), readdir(), readlink(), rewinddir(), rmdir(), stat(), symlink(), unlink() (not supported for directories), utime(), write()

Note that certain calls (such as pipe(), as well as read() and write() on FIFOs) may require the pipe manager.