Contur 2
Educational OS kernel simulator
Loading...
Searching...
No Matches
contur::KernelBuilder Class Reference

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.
KernelBuilderoperator= (const KernelBuilder &)=delete
 Copy assignment is disabled.
 KernelBuilder (KernelBuilder &&) noexcept
 Move-constructs builder state.
KernelBuilderoperator= (KernelBuilder &&) noexcept
 Move-assigns builder state.
KernelBuilderwithClock (std::unique_ptr< IClock > clock)
 Injects simulation clock dependency.
KernelBuilderwithMemory (std::unique_ptr< IMemory > memory)
 Injects physical memory dependency.
KernelBuilderwithMmu (std::unique_ptr< IMMU > mmu)
 Injects MMU dependency.
KernelBuilderwithVirtualMemory (std::unique_ptr< IVirtualMemory > virtualMemory)
 Injects virtual memory dependency.
KernelBuilderwithCpu (std::unique_ptr< ICPU > cpu)
 Injects CPU dependency.
KernelBuilderwithExecutionEngine (std::unique_ptr< IExecutionEngine > executionEngine)
 Injects execution-engine dependency.
KernelBuilderwithScheduler (std::unique_ptr< IScheduler > scheduler)
 Injects scheduler dependency.
KernelBuilderwithDispatcher (std::unique_ptr< IDispatcher > dispatcher)
 Injects dispatcher dependency.
KernelBuilderwithTracer (std::unique_ptr< ITracer > tracer)
 Injects tracing dependency.
KernelBuilderwithRuntime (std::unique_ptr< IDispatchRuntime > runtime)
 Injects a dispatch runtime whose lifetime is managed by the kernel.
KernelBuilderwithFileSystem (std::unique_ptr< IFileSystem > fileSystem)
 Injects filesystem dependency.
KernelBuilderwithDeviceManager (std::unique_ptr< DeviceManager > deviceManager)
 Injects device manager dependency.
KernelBuilderwithIoManager (std::unique_ptr< IIoManager > ioManager)
 Injects unified I/O manager dependency.
KernelBuilderwithIpcManager (std::unique_ptr< IpcManager > ipcManager)
 Injects IPC manager dependency.
KernelBuilderwithSyscallTable (std::unique_ptr< SyscallTable > syscallTable)
 Injects syscall table dependency.
KernelBuilderwithDefaultTickBudget (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_

Detailed Description

Fluent builder that assembles Kernel dependencies.

Definition at line 31 of file kernel_builder.h.

Constructor & Destructor Documentation

◆ KernelBuilder() [1/3]

◆ ~KernelBuilder()

contur::KernelBuilder::~KernelBuilder ( )

Destroys the builder and any still-owned dependency objects.

◆ KernelBuilder() [2/3]

contur::KernelBuilder::KernelBuilder ( const KernelBuilder & )
delete

Copy construction is disabled.

References KernelBuilder().

◆ KernelBuilder() [3/3]

contur::KernelBuilder::KernelBuilder ( KernelBuilder && )
noexcept

Move-constructs builder state.

References KernelBuilder().

Member Function Documentation

◆ build()

Result< std::unique_ptr< IKernel > > contur::KernelBuilder::build ( )
nodiscard

Builds a kernel instance from explicitly injected dependencies.

References build().

Referenced by build(), and buildDemoKernel().

◆ operator=() [1/2]

KernelBuilder & contur::KernelBuilder::operator= ( const KernelBuilder & )
delete

Copy assignment is disabled.

References KernelBuilder().

◆ operator=() [2/2]

KernelBuilder & contur::KernelBuilder::operator= ( KernelBuilder && )
noexcept

Move-assigns builder state.

References KernelBuilder().

◆ withClock()

KernelBuilder & contur::KernelBuilder::withClock ( std::unique_ptr< IClock > clock)
nodiscard

Injects simulation clock dependency.

Parameters
clockClock implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withClock().

Referenced by buildDemoKernel(), and withClock().

◆ withCpu()

KernelBuilder & contur::KernelBuilder::withCpu ( std::unique_ptr< ICPU > cpu)
nodiscard

Injects CPU dependency.

Parameters
cpuCPU implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withCpu().

Referenced by buildDemoKernel(), and withCpu().

◆ withDefaultTickBudget()

KernelBuilder & contur::KernelBuilder::withDefaultTickBudget ( std::size_t ticks)
nodiscard

Configures default dispatcher tick budget used by Kernel::tick(0).

Parameters
ticksDefault budget in simulation ticks.
Returns
Reference to this builder.

References KernelBuilder(), and withDefaultTickBudget().

Referenced by buildDemoKernel(), and withDefaultTickBudget().

◆ withDeviceManager()

KernelBuilder & contur::KernelBuilder::withDeviceManager ( std::unique_ptr< DeviceManager > deviceManager)
nodiscard

Injects device manager dependency.

Parameters
deviceManagerDevice registry implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withDeviceManager().

Referenced by buildDemoKernel(), and withDeviceManager().

◆ withDispatcher()

KernelBuilder & contur::KernelBuilder::withDispatcher ( std::unique_ptr< IDispatcher > dispatcher)
nodiscard

Injects dispatcher dependency.

Parameters
dispatcherDispatcher implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withDispatcher().

Referenced by buildDemoKernel(), and withDispatcher().

◆ withExecutionEngine()

KernelBuilder & contur::KernelBuilder::withExecutionEngine ( std::unique_ptr< IExecutionEngine > executionEngine)
nodiscard

Injects execution-engine dependency.

Parameters
executionEngineEngine implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withExecutionEngine().

Referenced by buildDemoKernel(), and withExecutionEngine().

◆ withFileSystem()

KernelBuilder & contur::KernelBuilder::withFileSystem ( std::unique_ptr< IFileSystem > fileSystem)
nodiscard

Injects filesystem dependency.

Parameters
fileSystemFilesystem implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withFileSystem().

Referenced by buildDemoKernel(), and withFileSystem().

◆ withIoManager()

KernelBuilder & contur::KernelBuilder::withIoManager ( std::unique_ptr< IIoManager > ioManager)
nodiscard

Injects unified I/O manager dependency.

Parameters
ioManagerI/O manager implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withIoManager().

Referenced by buildDemoKernel(), and withIoManager().

◆ withIpcManager()

KernelBuilder & contur::KernelBuilder::withIpcManager ( std::unique_ptr< IpcManager > ipcManager)
nodiscard

Injects IPC manager dependency.

Parameters
ipcManagerIPC manager implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withIpcManager().

Referenced by buildDemoKernel(), and withIpcManager().

◆ withMemory()

KernelBuilder & contur::KernelBuilder::withMemory ( std::unique_ptr< IMemory > memory)
nodiscard

Injects physical memory dependency.

Parameters
memoryMemory implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withMemory().

Referenced by buildDemoKernel(), and withMemory().

◆ withMmu()

KernelBuilder & contur::KernelBuilder::withMmu ( std::unique_ptr< IMMU > mmu)
nodiscard

Injects MMU dependency.

Parameters
mmuMMU implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withMmu().

Referenced by buildDemoKernel(), and withMmu().

◆ withRuntime()

KernelBuilder & contur::KernelBuilder::withRuntime ( std::unique_ptr< IDispatchRuntime > runtime)
nodiscard

Injects a dispatch runtime whose lifetime is managed by the kernel.

Use this when the runtime must outlive all dispatchers it drives.

Parameters
runtimeRuntime implementation owned by the kernel.
Returns
Reference to this builder.

References KernelBuilder(), and withRuntime().

Referenced by withRuntime().

◆ withScheduler()

KernelBuilder & contur::KernelBuilder::withScheduler ( std::unique_ptr< IScheduler > scheduler)
nodiscard

Injects scheduler dependency.

Parameters
schedulerScheduler implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withScheduler().

Referenced by buildDemoKernel(), and withScheduler().

◆ withSyscallTable()

KernelBuilder & contur::KernelBuilder::withSyscallTable ( std::unique_ptr< SyscallTable > syscallTable)
nodiscard

Injects syscall table dependency.

Parameters
syscallTableSyscall table implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withSyscallTable().

Referenced by buildDemoKernel(), and withSyscallTable().

◆ withTracer()

KernelBuilder & contur::KernelBuilder::withTracer ( std::unique_ptr< ITracer > tracer)
nodiscard

Injects tracing dependency.

Parameters
tracerTracer implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withTracer().

Referenced by buildDemoKernel(), and withTracer().

◆ withVirtualMemory()

KernelBuilder & contur::KernelBuilder::withVirtualMemory ( std::unique_ptr< IVirtualMemory > virtualMemory)
nodiscard

Injects virtual memory dependency.

Parameters
virtualMemoryVirtual memory implementation owned by the builder.
Returns
Reference to this builder.

References KernelBuilder(), and withVirtualMemory().

Referenced by buildDemoKernel(), and withVirtualMemory().

Member Data Documentation

◆ impl_

std::unique_ptr<Impl> contur::KernelBuilder::impl_
private

Definition at line 137 of file kernel_builder.h.


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