devb-ram
Driver for RAM disk interface (QNX OS)
Syntax:
devb-ram [cam option[,option]...]
[disk option[,option]...]
[ram option[,option]...]
[blk option[,option]...]
[fs_type options] &
Runs on:
QNX OS
Options:
,
) 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 libcam.so. If specified, they must follow the cam keyword.
- 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).
- 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.
- fs_type options
- The fs_type options control any filesystem (fs-*.so) module being loaded. Here, fs_type is the filesystem type, such as qnx6 for the Power-Safe filesystem. For the list of supported filesystem options, see the reference for the corresponding shared object. For example, for qnx6, see fs-qnx6.so.
Description:
The devb-ram driver creates a RAM disk interface, a storage area that exists only in memory but looks like a hard disk. When the capacity option isn't specified, devb-ram creates a 2 MB RAM disk. You can later manually format the RAM disk, optionally partition it with fdisk (or you can make the whole thing a filesystem), and then mount it.
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. This creates an internal RAM disk that io-blk.so does know is RAM and doesn't need to be copied via cache. It uses a 4 KB sector size. If you already have any other devb-* driver running, then you can simply piggyback the RAM disk on it (by adding, for example, blk ramdisk=10m to the invocation of that devb- driver).
devb-ram ram capacity=1 blk ramdisk=10m,cache=512k,vnode=256
mkqnx6fs /dev/ram0
mount -tqnx6 /dev/ram0
This approach has superior performance because it eliminates the memory-to-memory copies of devb-ram, it bypasses cache lookups, and the 4 KB sectors have smaller overheads.
Examples:
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.
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.
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.