crabmeat 1.0
Loading...
Searching...
No Matches
ktemporal.h
1
15
16#ifndef CBM_KTEMPORAL_H_
17#define CBM_KTEMPORAL_H_
18
19#include "crabmeat-common.h"
20
21#include "kernel/kbase.h"
22#include "kernel/kfactory.h"
23
24#include <queue>
25
26namespace cbm {
27
28struct KSchedNode
29{
30 kernel_t * kernel;
31 RunLevelArgs args;
32 uint64_t cntr;
33};
34
35class CBM_API ktemporal_t : public kernel_t
36{
37 CBM_KERNEL_OBJECT(ktemporal_t,__scheduler__)
38 public:
39 ktemporal_t();
40 ~ktemporal_t();
41
42 lerr_t launch( td_scalar_t /*stop time (sse)*/);
43 lerr_t register_for_execution( kernel_t *, RunLevelArgs *);
44
45 public:
46 lerr_t configure( RunLevelArgs *);
47 lerr_t initialize( RunLevelArgs *);
48 lerr_t write( RunLevelArgs *);
49
50 protected:
51 struct KSchedNodeCompare
52 {
53 /* a || ( b && ( c || d && ( e || f))) */
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))))); }
63 };
64 /* scheduled kernels */
65 std::priority_queue< KSchedNode, std::vector<KSchedNode>, KSchedNodeCompare > m_prioq;
66
67 private:
68 uint64_t m_cntr;
69
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;
75
76 void m_UpdateKSchedNode( KSchedNode *) const;
77
78 private:
79 /* hide these buggers for now */
80 ktemporal_t( ktemporal_t const &);
81 ktemporal_t &
82 operator=( ktemporal_t const &);
83};
84
85} /* namespace cbm */
86
87#endif /* !CBM_KTEMPORAL_H_ */
88
The "Service Registry" holds information about available services (e.g., models, readers,...
Definition Lresources.h:51