2023-03-18 08:10:33 +00:00
|
|
|
#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);
|
|
|
|
}
|
|
|
|
|
2023-04-21 16:18:15 +00:00
|
|
|
virtual usize size() const
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2023-03-19 10:21:50 +00:00
|
|
|
virtual bool blocking() const = 0;
|
|
|
|
|
2023-03-18 08:10:33 +00:00
|
|
|
virtual ~Device() = default;
|
|
|
|
};
|