Contur 2
Educational OS kernel simulator
Loading...
Searching...
No Matches
i_io_manager.h
Go to the documentation of this file.
1
3
4#pragma once
5
6#include <cstddef>
7#include <functional>
8#include <string>
9
10#include "contur/core/error.h"
11#include "contur/core/types.h"
12
14#include "contur/io/io_types.h"
15
16namespace contur {
17
19 using IoWakeCallback = std::function<void(ProcessId)>;
20
23 {
24 public:
25 virtual ~IIoManager() = default;
26
32 [[nodiscard]] virtual Result<void>
33 registerFile(RegisterValue resourceId, std::string path, IoResourceKind kind) = 0;
34
40 [[nodiscard]] virtual Result<void>
41 registerSocket(RegisterValue resourceId, std::size_t capacity, IoResourceKind kind) = 0;
42
48 [[nodiscard]] virtual Result<IoDescriptor>
49 open(RegisterValue resourceId, IoResourceKind kind, OpenMode mode) = 0;
50
54 [[nodiscard]] virtual Result<void> close(IoDescriptor fd) = 0;
55
60 [[nodiscard]] virtual Result<RegisterValue> read(IoDescriptor fd, ProcessId pid) = 0;
61
66 [[nodiscard]] virtual Result<void> write(IoDescriptor fd, RegisterValue value) = 0;
67
69 virtual void setWakeCallback(IoWakeCallback callback) = 0;
70 };
71
72} // namespace contur
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.
Definition error.h:104
Error codes and Result<T> type for fallible operations.
File descriptor types and descriptor-table abstraction.
Common I/O descriptor and resource-type definitions.
Definition block.h:15
std::uint32_t ProcessId
Unique identifier for a process.
Definition types.h:12
OpenMode
Open mode bit flags.
IoResourceKind
Resource kinds supported by the kernel I/O layer.
Definition io_types.h:31
std::int32_t RegisterValue
Value stored in a CPU register.
Definition types.h:21
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.
Definition io_types.h:12
Common type aliases, sentinel constants, and forward declarations used throughout the Contur 2 kernel...