This commit is contained in:
parent
2fbc6105d7
commit
64bca780a7
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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 {};
|
||||
|
6
kernel/src/fs/devices/ZeroDevice.cpp
Normal file
6
kernel/src/fs/devices/ZeroDevice.cpp
Normal file
@ -0,0 +1,6 @@
|
||||
#include "fs/devices/ZeroDevice.h"
|
||||
|
||||
Result<SharedPtr<Device>> ZeroDevice::create()
|
||||
{
|
||||
return (SharedPtr<Device>)TRY(make_shared<ZeroDevice>());
|
||||
}
|
28
kernel/src/fs/devices/ZeroDevice.h
Normal file
28
kernel/src/fs/devices/ZeroDevice.h
Normal 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;
|
||||
};
|
Loading…
Reference in New Issue
Block a user