contur2
Loading...
Searching...
No Matches
contur::Kernel Class Referencefinal

Concrete kernel facade. More...

#include <kernel.h>

Inheritance diagram for contur::Kernel:
Collaboration diagram for contur::Kernel:

Public Member Functions

 Kernel (KernelDependencies deps)
 ~Kernel () override
 Kernel (const Kernel &)=delete
Kerneloperator= (const Kernel &)=delete
 Kernel (Kernel &&) noexcept
Kerneloperator= (Kernel &&) noexcept
Result< ProcessIdcreateProcess (const ProcessConfig &config) override
 Creates and admits a process.
Result< void > terminateProcess (ProcessId pid) override
 Terminates a process immediately.
Result< void > tick (std::size_t tickBudget=0) override
 Executes one dispatch cycle.
Result< void > runForTicks (std::size_t cycles, std::size_t tickBudget=0) override
 Executes multiple dispatch cycles.
Result< RegisterValuesyscall (ProcessId pid, SyscallId id, std::span< const RegisterValue > args) override
 Dispatches a syscall on behalf of a process.
Result< void > registerSyscallHandler (SyscallId id, SyscallHandlerFn handler) override
 Registers or replaces syscall handler.
Result< void > registerSyncPrimitive (const std::string &name, std::unique_ptr< ISyncPrimitive > primitive) override
 Registers a named synchronization primitive.
Result< void > enterCritical (ProcessId pid, std::string_view primitiveName) override
 Acquires a named synchronization primitive.
Result< void > leaveCritical (ProcessId pid, std::string_view primitiveName) override
 Releases a named synchronization primitive.
KernelSnapshot snapshot () const override
 Returns a snapshot of current kernel state.
Tick now () const noexcept override
 Returns current simulation time.
bool hasProcess (ProcessId pid) const noexcept override
 Returns true when process exists in dispatcher.
std::size_t processCount () const noexcept override
 Returns total managed process count.
Public Member Functions inherited from contur::IKernel
virtual ~IKernel ()=default

Private Attributes

std::unique_ptr< Impl > impl_

Detailed Description

Concrete kernel facade.

Definition at line 67 of file kernel.h.

Constructor & Destructor Documentation

◆ Kernel() [1/3]

contur::Kernel::Kernel ( KernelDependencies deps)
explicit

◆ ~Kernel()

contur::Kernel::~Kernel ( )
override

◆ Kernel() [2/3]

contur::Kernel::Kernel ( const Kernel & )
delete

◆ Kernel() [3/3]

contur::Kernel::Kernel ( Kernel && )
noexcept

Member Function Documentation

◆ createProcess()

Result< ProcessId > contur::Kernel::createProcess ( const ProcessConfig & config)
nodiscardoverridevirtual

Creates and admits a process.

Parameters
configProcess configuration payload.
Returns
Created process ID or error.

Implements contur::IKernel.

◆ enterCritical()

Result< void > contur::Kernel::enterCritical ( ProcessId pid,
std::string_view primitiveName )
nodiscardoverridevirtual

Acquires a named synchronization primitive.

Implements contur::IKernel.

◆ hasProcess()

bool contur::Kernel::hasProcess ( ProcessId pid) const
nodiscardoverridevirtualnoexcept

Returns true when process exists in dispatcher.

Implements contur::IKernel.

◆ leaveCritical()

Result< void > contur::Kernel::leaveCritical ( ProcessId pid,
std::string_view primitiveName )
nodiscardoverridevirtual

Releases a named synchronization primitive.

Implements contur::IKernel.

◆ now()

Tick contur::Kernel::now ( ) const
nodiscardoverridevirtualnoexcept

Returns current simulation time.

Implements contur::IKernel.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ processCount()

std::size_t contur::Kernel::processCount ( ) const
nodiscardoverridevirtualnoexcept

Returns total managed process count.

Implements contur::IKernel.

◆ registerSyncPrimitive()

Result< void > contur::Kernel::registerSyncPrimitive ( const std::string & name,
std::unique_ptr< ISyncPrimitive > primitive )
nodiscardoverridevirtual

Registers a named synchronization primitive.

Parameters
namePrimitive name.
primitivePrimitive instance.
Returns
Ok on success or AlreadyExists/InvalidArgument.

Implements contur::IKernel.

◆ registerSyscallHandler()

Result< void > contur::Kernel::registerSyscallHandler ( SyscallId id,
SyscallHandlerFn handler )
nodiscardoverridevirtual

Registers or replaces syscall handler.

Parameters
idSyscall identifier.
handlerHandler function.
Returns
Ok on success or InvalidArgument.

Implements contur::IKernel.

◆ runForTicks()

Result< void > contur::Kernel::runForTicks ( std::size_t cycles,
std::size_t tickBudget = 0 )
nodiscardoverridevirtual

Executes multiple dispatch cycles.

Parameters
cyclesNumber of cycles to run.
tickBudgetOptional budget per cycle. 0 means kernel default.
Returns
Ok on success or the first non-recoverable error.

Implements contur::IKernel.

◆ snapshot()

KernelSnapshot contur::Kernel::snapshot ( ) const
nodiscardoverridevirtual

Returns a snapshot of current kernel state.

Implements contur::IKernel.

◆ syscall()

Result< RegisterValue > contur::Kernel::syscall ( ProcessId pid,
SyscallId id,
std::span< const RegisterValue > args )
nodiscardoverridevirtual

Dispatches a syscall on behalf of a process.

Parameters
pidCalling process identifier.
idSyscall identifier.
argsSyscall arguments.
Returns
Register-compatible syscall return value.

Implements contur::IKernel.

◆ terminateProcess()

Result< void > contur::Kernel::terminateProcess ( ProcessId pid)
nodiscardoverridevirtual

Terminates a process immediately.

Parameters
pidProcess identifier.
Returns
Ok on success or error if process is unknown.

Implements contur::IKernel.

◆ tick()

Result< void > contur::Kernel::tick ( std::size_t tickBudget = 0)
nodiscardoverridevirtual

Executes one dispatch cycle.

Parameters
tickBudgetOptional tick budget. 0 means kernel default.
Returns
Ok on success or error.

Implements contur::IKernel.

Member Data Documentation

◆ impl_

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

Definition at line 96 of file kernel.h.


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