Luna/kernel/src/fs/devices/Device.h

30 lines
522 B
C
Raw Normal View History

#pragma once
#include <luna/Result.h>
class Device
{
public:
virtual Result<usize> read(u8* buf, usize offset, usize length) const = 0;
virtual Result<usize> write(const u8* buf, usize offset, usize length) = 0;
2023-04-09 09:22:57 +00:00
virtual Result<u64> ioctl(int, void*)
{
return err(ENOTTY);
}
virtual usize size() const
{
return 0;
}
virtual bool is_block_device() const
{
return false;
}
2023-03-19 10:21:50 +00:00
virtual bool blocking() const = 0;
virtual ~Device() = default;
};