Kernel: Add /dev/null
This commit is contained in:
parent
8cfede341f
commit
ec2c314234
10
kernel/include/fs/devices/NullDevice.h
Normal file
10
kernel/include/fs/devices/NullDevice.h
Normal 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);
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
29
kernel/src/fs/devices/NullDevice.cpp
Normal file
29
kernel/src/fs/devices/NullDevice.cpp
Normal 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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user