contur2
Loading...
Searching...
No Matches
contur::IKernel Class Referenceabstract

Top-level kernel facade. More...

#include <i_kernel.h>

Inheritance diagram for contur::IKernel:

Public Member Functions

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

Detailed Description

Top-level kernel facade.

Definition at line 75 of file i_kernel.h.

Constructor & Destructor Documentation

◆ ~IKernel()

virtual contur::IKernel::~IKernel ( )
virtualdefault

Member Function Documentation

◆ createProcess()

virtual Result< ProcessId > contur::IKernel::createProcess ( const ProcessConfig & config)
nodiscardpure virtual

Creates and admits a process.

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

Implemented in contur::Kernel.

◆ enterCritical()

virtual Result< void > contur::IKernel::enterCritical ( ProcessId pid,
std::string_view primitiveName )
nodiscardpure virtual

Acquires a named synchronization primitive.

Implemented in contur::Kernel.

◆ hasProcess()

virtual bool contur::IKernel::hasProcess ( ProcessId pid) const
nodiscardpure virtualnoexcept

Returns true when process exists in dispatcher.

Implemented in contur::Kernel.

◆ leaveCritical()

virtual Result< void > contur::IKernel::leaveCritical ( ProcessId pid,
std::string_view primitiveName )
nodiscardpure virtual

Releases a named synchronization primitive.

Implemented in contur::Kernel.

◆ now()

virtual Tick contur::IKernel::now ( ) const
nodiscardpure virtualnoexcept

Returns current simulation time.

Implemented in contur::Kernel.

◆ processCount()

virtual std::size_t contur::IKernel::processCount ( ) const
nodiscardpure virtualnoexcept

Returns total managed process count.

Implemented in contur::Kernel.

◆ registerSyncPrimitive()

virtual Result< void > contur::IKernel::registerSyncPrimitive ( const std::string & name,
std::unique_ptr< ISyncPrimitive > primitive )
nodiscardpure virtual

Registers a named synchronization primitive.

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

Implemented in contur::Kernel.

◆ registerSyscallHandler()

virtual Result< void > contur::IKernel::registerSyscallHandler ( SyscallId id,
SyscallHandlerFn handler )
nodiscardpure virtual

Registers or replaces syscall handler.

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

Implemented in contur::Kernel.

◆ runForTicks()

virtual Result< void > contur::IKernel::runForTicks ( std::size_t cycles,
std::size_t tickBudget = 0 )
nodiscardpure virtual

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.

Implemented in contur::Kernel.

◆ snapshot()

virtual KernelSnapshot contur::IKernel::snapshot ( ) const
nodiscardpure virtual

Returns a snapshot of current kernel state.

Implemented in contur::Kernel.

◆ syscall()

virtual Result< RegisterValue > contur::IKernel::syscall ( ProcessId pid,
SyscallId id,
std::span< const RegisterValue > args )
nodiscardpure virtual

Dispatches a syscall on behalf of a process.

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

Implemented in contur::Kernel.

◆ terminateProcess()

virtual Result< void > contur::IKernel::terminateProcess ( ProcessId pid)
nodiscardpure virtual

Terminates a process immediately.

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

Implemented in contur::Kernel.

◆ tick()

virtual Result< void > contur::IKernel::tick ( std::size_t tickBudget = 0)
nodiscardpure virtual

Executes one dispatch cycle.

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

Implemented in contur::Kernel.


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