kernel: Add /dev/zero
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
apio 2023-03-30 21:19:16 +02:00
parent 2fbc6105d7
commit 64bca780a7
Signed by: asleepymoon
GPG Key ID: B8A7D06E42258954
5 changed files with 38 additions and 0 deletions

View File

@ -19,6 +19,7 @@ static void populate_devfs()
xmknod("/dev/console", 0666, 1, 0);
xmknod("/dev/null", 0666, 2, 0);
xmknod("/dev/zero", 0666, 2, 1);
}
int main()

View File

@ -38,6 +38,7 @@ set(SOURCES
src/fs/tmpfs/FileSystem.cpp
src/fs/devices/DeviceRegistry.cpp
src/fs/devices/NullDevice.cpp
src/fs/devices/ZeroDevice.cpp
src/fs/devices/ConsoleDevice.cpp
src/InitRD.cpp
src/ELF.cpp

View File

@ -2,6 +2,7 @@
#include "Log.h"
#include "fs/devices/ConsoleDevice.h"
#include "fs/devices/NullDevice.h"
#include "fs/devices/ZeroDevice.h"
#include <luna/Vector.h>
struct DeviceDescriptor
@ -42,6 +43,7 @@ namespace DeviceRegistry
{
// Hardcode default devices.
TRY(register_special_device(DeviceMajorTypes::Memory, 0, NullDevice::create));
TRY(register_special_device(DeviceMajorTypes::Memory, 1, ZeroDevice::create));
TRY(register_special_device(DeviceMajorTypes::Console, 0, ConsoleDevice::create));
return {};

View File

@ -0,0 +1,6 @@
#include "fs/devices/ZeroDevice.h"
Result<SharedPtr<Device>> ZeroDevice::create()
{
return (SharedPtr<Device>)TRY(make_shared<ZeroDevice>());
}

View File

@ -0,0 +1,28 @@
#pragma once
#include "fs/devices/DeviceRegistry.h"
class ZeroDevice : public Device
{
public:
// Initializer for DeviceRegistry.
static Result<SharedPtr<Device>> create();
Result<usize> read(u8* buf, usize, usize length) const override
{
__builtin_memset(buf, 0, length);
return length;
}
Result<usize> write(const u8*, usize, usize) override
{
return 0;
}
bool blocking() const override
{
return false;
}
virtual ~ZeroDevice() = default;
};