ADTF  3.18.2
IKernelabstract

Kernel interface for thread, timer and signal handling. More...

Inheritance diagram for IKernel:
[legend]

Public Member Functions

 ADTF_IID (IKernel, "kernel.penguin.services.adtf.iid")
 Interface ID for the kernel interface.
 
virtual tResult TimerCreate (adtf::ucom::iobject_ptr< ITimer > &pTimer, const char *strTimerName, tTimeStamp nPeriod, tTimeStamp nInitialDelay, tTimeStamp nMaximumExecutionTime, const adtf::ucom::iobject_ptr< IKernelRunnable > &pKernelRunnable, const void *pUserData=nullptr, size_t nUserDataSize=0, tTimerClock eClock=tTimerClock::ADTF, const tSchedulingInfo &sScheduling=tSchedulingInfo(), uint32_t ui32Flags=tTimerFlags::TIF_None)=0
 Creates a new timer, that periodically calls the Run method of the given runnable. More...
 
- Public Member Functions inherited from IKernel
 ADTF_IID (IKernel, "kernel.devil.services.adtf.iid")
 Interface ID for the kernel interface.
 
- Public Member Functions inherited from IKernel
 ADTF_IID (IKernel, "kernel.ant.services.adtf.iid")
 Interface ID for the kernel interface.
 
virtual tResult ThreadCreate (adtf::ucom::iobject_ptr< IThread > &pThread, const char *strThreadName, const adtf::ucom::iobject_ptr< IKernelRunnable > &pKernelRunnable, const void *pUserData=nullptr, size_t nUserDataSize=0, const tSchedulingInfo &sScheduling=tSchedulingInfo(), uint32_t ui32Flags=tThreadFlags::THF_None)=0
 Creates a new thread of execution that executes the Run method of the given runnable. More...
 
virtual tResult TimerCreate (adtf::ucom::iobject_ptr< ITimer > &pTimer, const char *strTimerName, tTimeStamp nPeriod, tTimeStamp nInitialDelay, const adtf::ucom::iobject_ptr< IKernelRunnable > &pKernelRunnable, const void *pUserData=nullptr, size_t nUserDataSize=0, tTimerClock eClock=tTimerClock::ADTF, const tSchedulingInfo &sScheduling=tSchedulingInfo(), uint32_t ui32Flags=tTimerFlags::TIF_None)=0
 Creates a new timer, that periodically calls the Run method of the given runnable. More...
 
virtual tResult SignalSend (const adtf::ucom::iobject_ptr< ISignal > &pSignal, uint32_t ui32Flags=tSignalFlags::SIG_None)=0
 Transmits a signal to all registered signal handlers. More...
 
virtual tResult SignalRegister (ISignalHandler &oHandler, uint32_t ui32Flags=tSignalFlags::SIG_None)=0
 Registers a new signal handler. More...
 
virtual tResult SignalUnregister (ISignalHandler &oHandler)=0
 Unregisters a signal handler. More...
 
virtual tResult GetObjects (adtf::ucom::iobject_enum< IObject > &oObjects)=0
 Returns a list of all kernel primitives. More...
 
- Public Member Functions inherited from IObject
 ADTF_IID (IObject, "object.ant.ucom.adtf.iid")
 Marks the IObject to be castable with the ucom_cast() More...
 

Additional Inherited Members

- Public Types inherited from IKernel
enum class  tSchedulingClass : uint32_t { Default = 0 , Normal = 1 , RealTime = 2 }
 Enum for different scheduling schemes. More...
 
enum  tThreadFlags { THF_None = 0 , THF_Detached = 1 }
 Flags for thread creation. More...
 
enum class  tTimerClock : uint32_t { ADTF = 0 , Monotonic = 1 , RealTime = 2 }
 Enum for different time sources for timers. More...
 
enum  tTimerFlags : uint8_t {
  TIF_None = 0 , TIF_Reschedule = 1 , TIF_Drop = 2 , TIF_ErrorLog = 4 ,
  TIF_ErrorStop = 8
}
 Flags for time creation. More...
 
enum  tSignalFlags { SIG_None = 0 , SIG_Async = 1 }
 Enum for signal options. More...
 
- Protected Member Functions inherited from IKernel
 ~IKernel ()=default
 Protected destructor --> Use implemented Destroy() instead of delete!
 
- Protected Member Functions inherited from IObject
 ~IObject ()=default
 Protected destructor --> Use implemented Destroy() instead of delete!
 

Detailed Description

Kernel interface for thread, timer and signal handling.

Definition at line 387 of file kernel_intf.h.

Member Function Documentation

◆ TimerCreate()

virtual tResult TimerCreate ( adtf::ucom::iobject_ptr< ITimer > &  pTimer,
const char *  strTimerName,
tTimeStamp  nPeriod,
tTimeStamp  nInitialDelay,
tTimeStamp  nMaximumExecutionTime,
const adtf::ucom::iobject_ptr< IKernelRunnable > &  pKernelRunnable,
const void *  pUserData = nullptr,
size_t  nUserDataSize = 0,
tTimerClock  eClock = tTimerClock::ADTF,
const tSchedulingInfo sScheduling = tSchedulingInfo(),
uint32_t  ui32Flags = tTimerFlags::TIF_None 
)
pure virtual

Creates a new timer, that periodically calls the Run method of the given runnable.

Please take a look at the adtf::system::kernel_timer template class, which transparently wraps this interface.

Parameters
[out]pTimerThis will be updated with a pointer to the interface of the created thread.
[in]strTimerNameThe name of the timer. Has to be unique among all registered kernel primitives.
[in]nPeriodThe period of the timer in microseconds. 0 = one-shot timer.
[in]nInitialDelayThe intial delay before the timer expires the first time.
[in]nMaximumExecutionTimeThe maximum allowed execution time.
[in]pKernelRunnableThe runnable that will be called.
[in]pUserDataThis is passed on to the runnable. Mind that the data is not stored or copied in any way, so make sure the pointer stays valid long enough.
[in]nUserDataSizeThe size of the user data passed to the runnable.
[in]eClockThe time source used by the timer.
[in]sSchedulingThe scheduling settings.
[in]ui32FlagsThread flags, see tTimerFlags.
Return values
ERR_FAILEDThe scheduling settings are not valid.
ERR_RESOURCE_IN_USEThe given name is already used by another kernel primitive.