// devices.cpp // Device subsystem for HOS // Author: Josh Holtrop // Date: 05/11/05 // Modified: 05/11/05 #define _HOS_CPP_ _HOS_CPP_ #include "hos_defines.h" #include "devices.h" #include "char/misc_char.h" #include "char/vconsole.h" #include "block/ramdisk.h" DeviceDriver *drivers[256]; int devices_init() { drivers[MAJOR_MISC_CHAR] = new MiscChar(); drivers[MAJOR_VCONSOLE] = new VConsoleDriver(); drivers[MAJOR_RAMDISK] = new Ramdisk(); return 0; } int block_read(major_t major, minor_t minor, u32_t blockStart, u32_t blocks, void *buffer) { if (drivers[major & 0xFF]) return drivers[major & 0xFF]->block_read(minor, blockStart, blocks, buffer); return DEV_INVALID_DEVICE; } int block_write(major_t major, minor_t minor, u32_t blockStart, u32_t blocks, void *buffer) { if (drivers[major & 0xFF]) return drivers[major & 0xFF]->block_write(minor, blockStart, blocks, buffer); return DEV_INVALID_DEVICE; } int char_read(major_t major, minor_t minor) { if (drivers[major & 0xFF]) return drivers[major & 0xFF]->char_read(minor); return DEV_INVALID_DEVICE; } int char_write(major_t major, minor_t minor, int c) { if (drivers[major & 0xFF]) return drivers[major & 0xFF]->char_write(minor, c); return DEV_INVALID_DEVICE; } DeviceDriver::DeviceDriver() {} DeviceDriver::~DeviceDriver() {} int DeviceDriver::char_read(minor_t minor) { return DEV_INVALID_ACCESS; } int DeviceDriver::char_write(minor_t minor, int c) { return DEV_INVALID_ACCESS; } int DeviceDriver::block_read(minor_t minor, u32_t blockStart, u32_t blocks, void *buffer) { return DEV_INVALID_ACCESS; } int DeviceDriver::block_write(minor_t minor, u32_t blockStart, u32_t blocks, void *buffer) { return DEV_INVALID_ACCESS; }