// devices.h // Device subsystem for HOS // Author: Josh Holtrop // Date: 05/11/05 // Modified: 06/02/05 #ifndef __HOS_DEVICES_H__ #define __HOS_DEVICES_H__ __HOS_DEVICES_H__ #include "hos_defines.h" #define DEV_INVALID_ACCESS -256 #define DEV_INVALID_DEVICE -257 #define DEV_EOF -1 #define MAJOR_MISC_CHAR 1 #define MAJOR_RAMDISK 2 #define MAJOR_VCONSOLE 4 #define BLOCK_SIZE 512 #define BLOCK_SIZE_LOG 9 #define DEV_MAJOR(x) (((x) >> 8) & 0xFF) #define DEV_MINOR(x) ((x) & 0xFF) #define DEV(x,y) ((x) << 8 | (y)) typedef short major_t; typedef short minor_t; typedef u32_t device_t; #ifdef _HOS_CPP_ extern "C" { #endif int devices_init(); int block_read(major_t major, minor_t minor, u32_t blockStart, u32_t blocks, void *buffer); int block_write(major_t major, minor_t minor, u32_t blockStart, u32_t blocks, void *buffer); int char_read(major_t major, minor_t minor); int char_write(major_t major, minor_t minor, int c); #ifdef _HOS_CPP_ } class DeviceDriver { public: DeviceDriver(); virtual ~DeviceDriver(); virtual int char_read(minor_t minor); virtual int char_write(minor_t minor, int c); virtual int block_read(minor_t minor, u32_t blockStart, u32_t blocks, void *buffer); virtual int block_write(minor_t minor, u32_t blockStart, u32_t blocks, void *buffer); }; #endif #endif