Kernel I/O manager interface.
virtual Result< void > write(IoDescriptor fd, RegisterValue value)=0
Writes one value to the descriptor.
virtual Result< void > close(IoDescriptor fd)=0
Closes a kernel I/O descriptor.
virtual Result< RegisterValue > read(IoDescriptor fd, ProcessId pid)=0
Reads one value from the descriptor.
virtual ~IIoManager()=default
virtual void setWakeCallback(IoWakeCallback callback)=0
Sets the wake callback invoked when I/O becomes ready.
virtual Result< void > registerSocket(RegisterValue resourceId, std::size_t capacity, IoResourceKind kind)=0
Registers a socket resource ID.
virtual Result< void > registerFile(RegisterValue resourceId, std::string path, IoResourceKind kind)=0
Registers a file resource ID to a filesystem path.
virtual Result< IoDescriptor > open(RegisterValue resourceId, IoResourceKind kind, OpenMode mode)=0
Opens a resource and returns a kernel I/O descriptor.
A result type that holds either a success value of type T or an ErrorCode.
Error codes and Result<T> type for fallible operations.
File descriptor types and descriptor-table abstraction.
Common I/O descriptor and resource-type definitions.
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.
Common type aliases, sentinel constants, and forward declarations used throughout the Contur 2 kernel...