![]() |
Contur 2
Educational OS kernel simulator
|
Fluent builder that assembles Kernel dependencies. More...
#include <kernel_builder.h>
Public Member Functions | |
| KernelBuilder () | |
| Creates an empty builder with no pre-wired dependencies. | |
| ~KernelBuilder () | |
| Destroys the builder and any still-owned dependency objects. | |
| KernelBuilder (const KernelBuilder &)=delete | |
| Copy construction is disabled. | |
| KernelBuilder & | operator= (const KernelBuilder &)=delete |
| Copy assignment is disabled. | |
| KernelBuilder (KernelBuilder &&) noexcept | |
| Move-constructs builder state. | |
| KernelBuilder & | operator= (KernelBuilder &&) noexcept |
| Move-assigns builder state. | |
| KernelBuilder & | withClock (std::unique_ptr< IClock > clock) |
| Injects simulation clock dependency. | |
| KernelBuilder & | withMemory (std::unique_ptr< IMemory > memory) |
| Injects physical memory dependency. | |
| KernelBuilder & | withMmu (std::unique_ptr< IMMU > mmu) |
| Injects MMU dependency. | |
| KernelBuilder & | withVirtualMemory (std::unique_ptr< IVirtualMemory > virtualMemory) |
| Injects virtual memory dependency. | |
| KernelBuilder & | withCpu (std::unique_ptr< ICPU > cpu) |
| Injects CPU dependency. | |
| KernelBuilder & | withExecutionEngine (std::unique_ptr< IExecutionEngine > executionEngine) |
| Injects execution-engine dependency. | |
| KernelBuilder & | withScheduler (std::unique_ptr< IScheduler > scheduler) |
| Injects scheduler dependency. | |
| KernelBuilder & | withDispatcher (std::unique_ptr< IDispatcher > dispatcher) |
| Injects dispatcher dependency. | |
| KernelBuilder & | withTracer (std::unique_ptr< ITracer > tracer) |
| Injects tracing dependency. | |
| KernelBuilder & | withRuntime (std::unique_ptr< IDispatchRuntime > runtime) |
| Injects a dispatch runtime whose lifetime is managed by the kernel. | |
| KernelBuilder & | withFileSystem (std::unique_ptr< IFileSystem > fileSystem) |
| Injects filesystem dependency. | |
| KernelBuilder & | withDeviceManager (std::unique_ptr< DeviceManager > deviceManager) |
| Injects device manager dependency. | |
| KernelBuilder & | withIoManager (std::unique_ptr< IIoManager > ioManager) |
| Injects unified I/O manager dependency. | |
| KernelBuilder & | withIpcManager (std::unique_ptr< IpcManager > ipcManager) |
| Injects IPC manager dependency. | |
| KernelBuilder & | withSyscallTable (std::unique_ptr< SyscallTable > syscallTable) |
| Injects syscall table dependency. | |
| KernelBuilder & | withDefaultTickBudget (std::size_t ticks) |
| Configures default dispatcher tick budget used by Kernel::tick(0). | |
| Result< std::unique_ptr< IKernel > > | build () |
| Builds a kernel instance from explicitly injected dependencies. | |
Private Attributes | |
| std::unique_ptr< Impl > | impl_ |
Fluent builder that assembles Kernel dependencies.
Definition at line 31 of file kernel_builder.h.
| contur::KernelBuilder::KernelBuilder | ( | ) |
Creates an empty builder with no pre-wired dependencies.
Referenced by KernelBuilder(), KernelBuilder(), operator=(), operator=(), withClock(), withCpu(), withDefaultTickBudget(), withDeviceManager(), withDispatcher(), withExecutionEngine(), withFileSystem(), withIoManager(), withIpcManager(), withMemory(), withMmu(), withRuntime(), withScheduler(), withSyscallTable(), withTracer(), and withVirtualMemory().
| contur::KernelBuilder::~KernelBuilder | ( | ) |
Destroys the builder and any still-owned dependency objects.
|
delete |
Copy construction is disabled.
References KernelBuilder().
|
noexcept |
Move-constructs builder state.
References KernelBuilder().
Builds a kernel instance from explicitly injected dependencies.
References build().
Referenced by build(), and buildDemoKernel().
|
delete |
Copy assignment is disabled.
References KernelBuilder().
|
noexcept |
Move-assigns builder state.
References KernelBuilder().
|
nodiscard |
Injects simulation clock dependency.
| clock | Clock implementation owned by the builder. |
References KernelBuilder(), and withClock().
Referenced by buildDemoKernel(), and withClock().
|
nodiscard |
Injects CPU dependency.
| cpu | CPU implementation owned by the builder. |
References KernelBuilder(), and withCpu().
Referenced by buildDemoKernel(), and withCpu().
|
nodiscard |
Configures default dispatcher tick budget used by Kernel::tick(0).
| ticks | Default budget in simulation ticks. |
References KernelBuilder(), and withDefaultTickBudget().
Referenced by buildDemoKernel(), and withDefaultTickBudget().
|
nodiscard |
Injects device manager dependency.
| deviceManager | Device registry implementation owned by the builder. |
References KernelBuilder(), and withDeviceManager().
Referenced by buildDemoKernel(), and withDeviceManager().
|
nodiscard |
Injects dispatcher dependency.
| dispatcher | Dispatcher implementation owned by the builder. |
References KernelBuilder(), and withDispatcher().
Referenced by buildDemoKernel(), and withDispatcher().
|
nodiscard |
Injects execution-engine dependency.
| executionEngine | Engine implementation owned by the builder. |
References KernelBuilder(), and withExecutionEngine().
Referenced by buildDemoKernel(), and withExecutionEngine().
|
nodiscard |
Injects filesystem dependency.
| fileSystem | Filesystem implementation owned by the builder. |
References KernelBuilder(), and withFileSystem().
Referenced by buildDemoKernel(), and withFileSystem().
|
nodiscard |
Injects unified I/O manager dependency.
| ioManager | I/O manager implementation owned by the builder. |
References KernelBuilder(), and withIoManager().
Referenced by buildDemoKernel(), and withIoManager().
|
nodiscard |
Injects IPC manager dependency.
| ipcManager | IPC manager implementation owned by the builder. |
References KernelBuilder(), and withIpcManager().
Referenced by buildDemoKernel(), and withIpcManager().
|
nodiscard |
Injects physical memory dependency.
| memory | Memory implementation owned by the builder. |
References KernelBuilder(), and withMemory().
Referenced by buildDemoKernel(), and withMemory().
|
nodiscard |
Injects MMU dependency.
| mmu | MMU implementation owned by the builder. |
References KernelBuilder(), and withMmu().
Referenced by buildDemoKernel(), and withMmu().
|
nodiscard |
Injects a dispatch runtime whose lifetime is managed by the kernel.
Use this when the runtime must outlive all dispatchers it drives.
| runtime | Runtime implementation owned by the kernel. |
References KernelBuilder(), and withRuntime().
Referenced by withRuntime().
|
nodiscard |
Injects scheduler dependency.
| scheduler | Scheduler implementation owned by the builder. |
References KernelBuilder(), and withScheduler().
Referenced by buildDemoKernel(), and withScheduler().
|
nodiscard |
Injects syscall table dependency.
| syscallTable | Syscall table implementation owned by the builder. |
References KernelBuilder(), and withSyscallTable().
Referenced by buildDemoKernel(), and withSyscallTable().
|
nodiscard |
Injects tracing dependency.
| tracer | Tracer implementation owned by the builder. |
References KernelBuilder(), and withTracer().
Referenced by buildDemoKernel(), and withTracer().
|
nodiscard |
Injects virtual memory dependency.
| virtualMemory | Virtual memory implementation owned by the builder. |
References KernelBuilder(), and withVirtualMemory().
Referenced by buildDemoKernel(), and withVirtualMemory().
|
private |
Definition at line 137 of file kernel_builder.h.