16#ifndef CBM_KTEMPORAL_H_
17#define CBM_KTEMPORAL_H_
19#include "crabmeat-common.h"
21#include "kernel/kbase.h"
22#include "kernel/kfactory.h"
35class CBM_API ktemporal_t :
public kernel_t
37 CBM_KERNEL_OBJECT(ktemporal_t,__scheduler__)
42 lerr_t launch( td_scalar_t );
43 lerr_t register_for_execution( kernel_t *, RunLevelArgs *);
46 lerr_t configure( RunLevelArgs *);
47 lerr_t initialize( RunLevelArgs *);
48 lerr_t write( RunLevelArgs *);
51 struct KSchedNodeCompare
54 bool operator()( KSchedNode
const & _lhs,
55 KSchedNode
const & _rhs)
const
56 {
return ( _lhs.args.nextcall_sse > _rhs.args.nextcall_sse)
57 || ( _lhs.args.nextcall_sse == _rhs.args.nextcall_sse
58 && ( _lhs.args.nextcall_rl > _rhs.args.nextcall_rl
59 || ( _lhs.args.nextcall_rl == _rhs.args.nextcall_rl
60 && (( _lhs.args.flags.prio == _rhs.args.flags.prio
61 && _lhs.cntr > _rhs.cntr)
62 || ( _lhs.args.flags.prio < _rhs.args.flags.prio))))); }
65 std::priority_queue< KSchedNode, std::vector<KSchedNode>, KSchedNodeCompare > m_prioq;
70 lerr_t m_Launch( RunLevelArgs *);
71 lerr_t m_ScheduleSelf( RunLevelArgs
const *);
72 lerr_t m_InsertInSchedule( KSchedNode *);
73 KSchedNode m_PopFromSchedule();
74 lerr_t m_ExecuteKernel( KSchedNode *)
const;
76 void m_UpdateKSchedNode( KSchedNode *)
const;
80 ktemporal_t( ktemporal_t
const &);
82 operator=( ktemporal_t
const &);
The "Service Registry" holds information about available services (e.g., models, readers,...
Definition Lresources.h:51