#include "block/rd.h" #include "kernel.h" ramdisk_t ramdisks[256]; char rd_refs[256]; //number of references to each ramdisk void rd_init() { } int rd_register(byte *ramdisk, u32_t size) { int i; for (i = 0; i < 256; i++) { if (!rd_refs[i]) { rd_refs[i]++; ramdisks[i].start = ramdisk; ramdisks[i].size = size; return i; } } return -1; } int rd_remove(minor_t minor) { if (rd_refs[minor] <= 0) return -1; rd_refs[minor]--; if (!rd_refs[minor]) free(ramdisks[minor].start); } int rd_read_block(minor_t minor, u32_t blockNum, u32_t count, byte *buffer) { if (rd_refs[minor] <= 0) return -1; byte *copyFrom = ramdisks[minor] + (blockNum << 9); if (copyFrom > ramdisks[minor].start + ramdisks[minor].size) return -1; } int rd_write_block(minor_t minor, u32_t blockNum, u32_t count, byte *buffer) { }