Kernel: Add /dev/null

This commit is contained in:
apio 2022-10-25 17:59:55 +02:00
parent 8cfede341f
commit ec2c314234
3 changed files with 41 additions and 0 deletions

View File

@ -0,0 +1,10 @@
#pragma once
#include "fs/VFS.h"
namespace NullDevice
{
VFS::Node* create_new(const char* devname);
ssize_t write(VFS::Node* node, size_t offset, size_t size, const char* buffer);
ssize_t read(VFS::Node* node, size_t offset, size_t size, char* buffer);
}

View File

@ -1,6 +1,7 @@
#include "fs/devices/DeviceFS.h"
#include "fs/devices/Console.h"
#include "fs/devices/Keyboard.h"
#include "fs/devices/NullDevice.h"
#include "fs/devices/Random.h"
#include "fs/devices/Serial.h"
#include "fs/devices/Uptime.h"
@ -32,6 +33,7 @@ VFS::Node* DeviceFS::get()
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");
devfs_files[devfs_file_count++] = NullDevice::create_new("null");
devfs_root->length = devfs_file_count;
return devfs_root;
}

View File

@ -0,0 +1,29 @@
#include "fs/devices/NullDevice.h"
#include "std/stdio.h"
#include "std/stdlib.h"
#include "std/string.h"
VFS::Node* NullDevice::create_new(const char* devname)
{
VFS::Node* dev = new VFS::Node;
dev->write_func = NullDevice::write;
dev->read_func = NullDevice::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 NullDevice::write(VFS::Node* node, size_t, size_t size, const char*)
{
if (!node) return -1;
return (ssize_t)size;
}
ssize_t NullDevice::read(VFS::Node* node, size_t, size_t, char*)
{
if (!node) return -1;
return 0;
}