contur2
Loading...
Searching...
No Matches
kernel_builder.h
Go to the documentation of this file.
1
3
4#pragma once
5
6#include <cstddef>
7#include <memory>
8
10
11namespace contur {
12
13 class IClock;
14 class IMemory;
15 class IMMU;
16 class IVirtualMemory;
17 class ICPU;
18 class IExecutionEngine;
19 class IScheduler;
21 class IDispatcher;
22 class IFileSystem;
24 class IpcManager;
25 class SyscallTable;
26 struct KernelDependencies;
27
30 {
31 public:
34
35 KernelBuilder(const KernelBuilder &) = delete;
38 KernelBuilder &operator=(KernelBuilder &&) noexcept;
39
40 [[nodiscard]] KernelBuilder &withClock(std::unique_ptr<IClock> clock);
41 [[nodiscard]] KernelBuilder &withMemory(std::unique_ptr<IMemory> memory);
42 [[nodiscard]] KernelBuilder &withMmu(std::unique_ptr<IMMU> mmu);
43 [[nodiscard]] KernelBuilder &withVirtualMemory(std::unique_ptr<IVirtualMemory> virtualMemory);
44 [[nodiscard]] KernelBuilder &withCpu(std::unique_ptr<ICPU> cpu);
45 [[nodiscard]] KernelBuilder &withExecutionEngine(std::unique_ptr<IExecutionEngine> executionEngine);
46 [[nodiscard]] KernelBuilder &withSchedulingPolicy(std::unique_ptr<ISchedulingPolicy> policy);
47 [[nodiscard]] KernelBuilder &withScheduler(std::unique_ptr<IScheduler> scheduler);
48 [[nodiscard]] KernelBuilder &withDispatcher(std::unique_ptr<IDispatcher> dispatcher);
49 [[nodiscard]] KernelBuilder &withFileSystem(std::unique_ptr<IFileSystem> fileSystem);
50 [[nodiscard]] KernelBuilder &withIpcManager(std::unique_ptr<IpcManager> ipcManager);
51 [[nodiscard]] KernelBuilder &withSyscallTable(std::unique_ptr<SyscallTable> syscallTable);
52 [[nodiscard]] KernelBuilder &withPageReplacementPolicy(std::unique_ptr<IPageReplacementPolicy> replacement);
53 [[nodiscard]] KernelBuilder &withDefaultTickBudget(std::size_t ticks);
54
56 [[nodiscard]] std::unique_ptr<IKernel> build();
57
58 private:
59 struct Impl;
60 std::unique_ptr<Impl> impl_;
61 };
62
63} // namespace contur
Abstract CPU interface.
Definition i_cpu.h:21
Abstract clock interface for simulation time.
Definition clock.h:21
Interface for process lifecycle dispatch orchestration.
Abstract execution engine interface.
Abstract file-system interface.
Top-level kernel facade.
Definition i_kernel.h:76
Abstract interface for the Memory Management Unit.
Definition i_mmu.h:22
Abstract interface for linear addressable memory.
Definition i_memory.h:19
Abstract interface for page replacement algorithms.
Scheduler abstraction managing process state queues.
Definition i_scheduler.h:23
Strategy interface for scheduling algorithms.
Abstract interface for virtual memory management.
Registry/mediator for named IPC channels.
Definition ipc_manager.h:18
KernelBuilder & operator=(const KernelBuilder &)=delete
KernelBuilder & withClock(std::unique_ptr< IClock > clock)
KernelBuilder & withFileSystem(std::unique_ptr< IFileSystem > fileSystem)
KernelBuilder & withMmu(std::unique_ptr< IMMU > mmu)
KernelBuilder & withVirtualMemory(std::unique_ptr< IVirtualMemory > virtualMemory)
KernelBuilder & withCpu(std::unique_ptr< ICPU > cpu)
KernelBuilder & withExecutionEngine(std::unique_ptr< IExecutionEngine > executionEngine)
std::unique_ptr< IKernel > build()
Builds a fully wired kernel instance.
KernelBuilder & withSchedulingPolicy(std::unique_ptr< ISchedulingPolicy > policy)
KernelBuilder & withScheduler(std::unique_ptr< IScheduler > scheduler)
KernelBuilder(const KernelBuilder &)=delete
KernelBuilder & withDispatcher(std::unique_ptr< IDispatcher > dispatcher)
std::unique_ptr< Impl > impl_
KernelBuilder & withPageReplacementPolicy(std::unique_ptr< IPageReplacementPolicy > replacement)
KernelBuilder & withDefaultTickBudget(std::size_t ticks)
KernelBuilder & withSyscallTable(std::unique_ptr< SyscallTable > syscallTable)
KernelBuilder & withMemory(std::unique_ptr< IMemory > memory)
KernelBuilder(KernelBuilder &&) noexcept
KernelBuilder & withIpcManager(std::unique_ptr< IpcManager > ipcManager)
Dispatch table mapping SyscallId to handler functions.
IKernel facade interface for top-level kernel operations.
Definition block.h:15
Dependency bundle used to construct a Kernel.
Definition kernel.h:28