Contur 2
Educational OS kernel simulator
Loading...
Searching...
No Matches
contur::IIoManager Class Referenceabstract

Kernel I/O manager interface. More...

#include <i_io_manager.h>

Inheritance diagram for contur::IIoManager:

Public Member Functions

virtual ~IIoManager ()=default
virtual Result< void > registerFile (RegisterValue resourceId, std::string path, IoResourceKind kind)=0
 Registers a file resource ID to a filesystem path.
virtual Result< void > registerSocket (RegisterValue resourceId, std::size_t capacity, IoResourceKind kind)=0
 Registers a socket resource ID.
virtual Result< IoDescriptoropen (RegisterValue resourceId, IoResourceKind kind, OpenMode mode)=0
 Opens a resource and returns a kernel I/O descriptor.
virtual Result< void > close (IoDescriptor fd)=0
 Closes a kernel I/O descriptor.
virtual Result< RegisterValueread (IoDescriptor fd, ProcessId pid)=0
 Reads one value from the descriptor.
virtual Result< void > write (IoDescriptor fd, RegisterValue value)=0
 Writes one value to the descriptor.
virtual void setWakeCallback (IoWakeCallback callback)=0
 Sets the wake callback invoked when I/O becomes ready.

Detailed Description

Kernel I/O manager interface.

Definition at line 22 of file i_io_manager.h.

Constructor & Destructor Documentation

◆ ~IIoManager()

virtual contur::IIoManager::~IIoManager ( )
virtualdefault

Member Function Documentation

◆ close()

virtual Result< void > contur::IIoManager::close ( IoDescriptor fd)
nodiscardpure virtual

Closes a kernel I/O descriptor.

Parameters
fdDescriptor to close.
Returns
Ok on success; NotFound otherwise.

Implemented in contur::IoManager.

◆ open()

virtual Result< IoDescriptor > contur::IIoManager::open ( RegisterValue resourceId,
IoResourceKind kind,
OpenMode mode )
nodiscardpure virtual

Opens a resource and returns a kernel I/O descriptor.

Parameters
resourceIdNumeric resource identifier.
kindResource kind.
modeOpen mode flags (files only).
Returns
Descriptor on success; error on failure.

Implemented in contur::IoManager.

◆ read()

virtual Result< RegisterValue > contur::IIoManager::read ( IoDescriptor fd,
ProcessId pid )
nodiscardpure virtual

Reads one value from the descriptor.

Parameters
fdDescriptor to read from.
pidRequesting process id (for blocking waits).
Returns
Read value on success; ResourceBusy if the call should block.

Implemented in contur::IoManager.

◆ registerFile()

virtual Result< void > contur::IIoManager::registerFile ( RegisterValue resourceId,
std::string path,
IoResourceKind kind )
nodiscardpure virtual

Registers a file resource ID to a filesystem path.

Parameters
resourceIdNumeric resource identifier.
pathAbsolute file path.
kindFile or LAN file resource kind.
Returns
Ok on success; AlreadyExists/InvalidArgument otherwise.

Implemented in contur::IoManager.

◆ registerSocket()

virtual Result< void > contur::IIoManager::registerSocket ( RegisterValue resourceId,
std::size_t capacity,
IoResourceKind kind )
nodiscardpure virtual

Registers a socket resource ID.

Parameters
resourceIdNumeric resource identifier.
capacityMaximum queued elements.
kindSocket resource kind.
Returns
Ok on success; AlreadyExists/InvalidArgument otherwise.

Implemented in contur::IoManager.

◆ setWakeCallback()

virtual void contur::IIoManager::setWakeCallback ( IoWakeCallback callback)
pure virtual

Sets the wake callback invoked when I/O becomes ready.

Implemented in contur::IoManager.

◆ write()

virtual Result< void > contur::IIoManager::write ( IoDescriptor fd,
RegisterValue value )
nodiscardpure virtual

Writes one value to the descriptor.

Parameters
fdDescriptor to write to.
valueValue to write.
Returns
Ok on success; ResourceBusy if the call should block.

Implemented in contur::IoManager.


The documentation for this class was generated from the following file: