#include "fs/devices/Random.h" #include "config.h" #include "rand/Mersenne.h" #include "render/TextRenderer.h" #include "std/stdio.h" #include "std/stdlib.h" #include "std/string.h" VFS::Node* RandomDevice::create_new(const char* devname) { VFS::Node* dev = new VFS::Node; dev->read_func = RandomDevice::read; dev->inode = 0; dev->length = 0; dev->type = VFS_DEVICE; dev->flags = 0; strncpy(dev->name, devname, sizeof(dev->name)); return dev; } ssize_t RandomDevice::read(VFS::Node* node, size_t, size_t size, char* buffer) { if (!node) return -1; size_t nread = size; while (size >= sizeof(uint64_t)) { *(uint64_t*)buffer = Mersenne::get(); size -= sizeof(uint64_t); buffer += sizeof(uint64_t); } while (size) { *buffer = (char)(Mersenne::get() & 0xFF); size--; buffer++; } return (ssize_t)nread; }