This file contains how many milliseconds have passed since boot at the time of reading it :)
45 lines
1.4 KiB
C++
45 lines
1.4 KiB
C++
#include "fs/devices/DeviceFS.h"
|
|
#include "fs/devices/Console.h"
|
|
#include "fs/devices/Keyboard.h"
|
|
#include "fs/devices/Random.h"
|
|
#include "fs/devices/Serial.h"
|
|
#include "fs/devices/Uptime.h"
|
|
#include "fs/devices/Version.h"
|
|
#include "std/stdlib.h"
|
|
#include "std/string.h"
|
|
|
|
#define DEVFS_MAX_FILES 32
|
|
|
|
VFS::Node* devfs_root = nullptr;
|
|
|
|
VFS::Node* devfs_files[DEVFS_MAX_FILES];
|
|
int devfs_file_count = 0;
|
|
|
|
VFS::Node* DeviceFS::get()
|
|
{
|
|
if (devfs_root) return devfs_root;
|
|
devfs_root = new VFS::Node;
|
|
devfs_root->length = 0;
|
|
devfs_root->inode = 0;
|
|
devfs_root->type = VFS_DIRECTORY;
|
|
devfs_root->find_func = DeviceFS::finddir;
|
|
strncpy(devfs_root->name, "dev", sizeof(devfs_root->name));
|
|
|
|
devfs_files[devfs_file_count++] = VersionDevice::create_new("version");
|
|
devfs_files[devfs_file_count++] = ConsoleDevice::create_new("console");
|
|
devfs_files[devfs_file_count++] = SerialDevice::create_new("serial");
|
|
devfs_files[devfs_file_count++] = RandomDevice::create_new("random");
|
|
devfs_files[devfs_file_count++] = KeyboardDevice::create_new("kbd");
|
|
devfs_files[devfs_file_count++] = UptimeDevice::create_new("uptime");
|
|
return devfs_root;
|
|
}
|
|
|
|
VFS::Node* DeviceFS::finddir(VFS::Node* node, const char* filename)
|
|
{
|
|
if (!node) return 0;
|
|
for (int i = 0; i < devfs_file_count; i++)
|
|
{
|
|
if (strncmp(devfs_files[i]->name, filename, sizeof(VFS::Node::name)) == 0) { return devfs_files[i]; }
|
|
}
|
|
return 0;
|
|
} |