Registry and dispatcher for I/O devices.
Abstract file-system interface.
Kernel I/O manager interface.
~IoManager() override
Destroys the manager.
void setWakeCallback(IoWakeCallback callback) override
Sets the wake callback invoked when I/O becomes ready.
std::unique_ptr< Impl > impl_
Result< void > close(IoDescriptor fd) override
Closes a kernel I/O descriptor.
Result< void > registerFile(RegisterValue resourceId, std::string path, IoResourceKind kind) override
Registers a file resource ID to a filesystem path.
IoManager & operator=(const IoManager &)=delete
IoManager(const IoManager &)=delete
Result< IoDescriptor > open(RegisterValue resourceId, IoResourceKind kind, OpenMode mode) override
Opens a resource and returns a kernel I/O descriptor.
Result< void > registerSocket(RegisterValue resourceId, std::size_t capacity, IoResourceKind kind) override
Registers a socket resource ID.
Result< RegisterValue > read(IoDescriptor fd, ProcessId pid) override
Reads one value from the descriptor.
IoManager(IoManager &&) noexcept
IoManager(IFileSystem &fileSystem, DeviceManager &devices)
Constructs an I/O manager bound to filesystem and device registry.
Result< void > write(IoDescriptor fd, RegisterValue value) override
Writes one value to the descriptor.
A result type that holds either a success value of type T or an ErrorCode.
IIoManager interface for unified file/socket I/O.
std::uint32_t ProcessId
Unique identifier for a process.
OpenMode
Open mode bit flags.
IoResourceKind
Resource kinds supported by the kernel I/O layer.
std::int32_t RegisterValue
Value stored in a CPU register.
std::function< void(ProcessId)> IoWakeCallback
Callback used to wake a blocked process when I/O becomes ready.
Unified descriptor handle returned by the kernel I/O layer.