|
Retro Rocket Kernel
BASIC-Powered Operating System
|
Represents a block storage device e.g. a hard disk, DVD-ROM drive, etc. More...
#include <filesystem.h>
Collaboration diagram for storage_device_t:Data Fields | |
| char | name [16] |
| Storage device name, e.g. 'hd0'. You should use make_unique_device_name() to fill this field. More... | |
| uint64_t | size |
| Total extent of storage device if known, otherwise this value should be SIZE_MAX. More... | |
| block_read | blockread |
| Function pointer for blockread() Block reads are always expected to be in increments of block_size. More... | |
| block_write | blockwrite |
| Function pointer for blockwrite() Block writes are always expected to be in increments of block_size. More... | |
| uint32_t | block_size |
| The block size read and write operations. This is usually a sector size on disk drives. More... | |
| uint64_t | opaque1 |
| An opaque integer value which can be given meaning by the storage device driver. More... | |
| void * | opaque2 |
| An opaque pointer value which can be given meaning by the storage device driver. More... | |
| struct storage_device_t * | next |
| Pointer to next storage device, or NULL. More... | |
Represents a block storage device e.g. a hard disk, DVD-ROM drive, etc.
A block storage device is expected to provide at least one endpoint for a readonly storage device like a ROM or CD, which is blockread(). Reads and writes are always performed in block_size chunks, and any buffers used for requests are expected to be a clean modulus of this block size.
Writeable filesystems should also implement blockwrite().
| uint32_t storage_device_t::block_size |
The block size read and write operations. This is usually a sector size on disk drives.
| block_read storage_device_t::blockread |
Function pointer for blockread() Block reads are always expected to be in increments of block_size.
| block_write storage_device_t::blockwrite |
Function pointer for blockwrite() Block writes are always expected to be in increments of block_size.
| char storage_device_t::name[16] |
Storage device name, e.g. 'hd0'. You should use make_unique_device_name() to fill this field.
| struct storage_device_t* storage_device_t::next |
Pointer to next storage device, or NULL.
| uint64_t storage_device_t::opaque1 |
An opaque integer value which can be given meaning by the storage device driver.
| void* storage_device_t::opaque2 |
An opaque pointer value which can be given meaning by the storage device driver.
| uint64_t storage_device_t::size |
Total extent of storage device if known, otherwise this value should be SIZE_MAX.