50#include "em_libconfig.h"
53static int read_config_file(
void)
58 bool val_bool =
false;
61 EM_PRINT(
"EM dispatch config:\n");
66 conf_str =
"dispatch.poll_ctrl_interval";
67 ret = em_libconfig_lookup_int(&
em_shm->libconfig, conf_str, &val);
69 EM_LOG(EM_LOG_ERR,
"Config option '%s' not found.\n", conf_str);
74 EM_LOG(EM_LOG_ERR,
"Bad config value '%s = %d'\n",
79 em_shm->
opt.dispatch.poll_ctrl_interval = val;
80 EM_PRINT(
" %s: %d\n", conf_str, val);
85 conf_str =
"dispatch.poll_ctrl_interval_ns";
86 ret = em_libconfig_lookup_int64(&
em_shm->libconfig, conf_str, &val64);
88 EM_LOG(EM_LOG_ERR,
"Config option '%s' not found.\n", conf_str);
93 EM_LOG(EM_LOG_ERR,
"Bad config value '%s = %" PRId64
"'\n",
98 em_shm->
opt.dispatch.poll_ctrl_interval_ns = val64;
99 long double sec = (
long double)val64 / 1000000000.0;
101 EM_PRINT(
" %s: %" PRId64
"ns (%Lfs)\n", conf_str, val64, sec);
106 conf_str =
"dispatch.poll_drain_interval";
107 ret = em_libconfig_lookup_int(&
em_shm->libconfig, conf_str, &val);
108 if (unlikely(!ret)) {
109 EM_LOG(EM_LOG_ERR,
"Config option '%s' not found.\n", conf_str);
114 EM_LOG(EM_LOG_ERR,
"Bad config value '%s = %d'\n",
119 em_shm->
opt.dispatch.poll_drain_interval = val;
120 EM_PRINT(
" %s: %d\n", conf_str, val);
125 conf_str =
"dispatch.poll_drain_interval_ns";
126 ret = em_libconfig_lookup_int64(&
em_shm->libconfig, conf_str, &val64);
127 if (unlikely(!ret)) {
128 EM_LOG(EM_LOG_ERR,
"Config option '%s' not found.\n", conf_str);
133 EM_LOG(EM_LOG_ERR,
"Bad config value '%s = %" PRId64
"'\n",
138 em_shm->
opt.dispatch.poll_drain_interval_ns = val64;
139 sec = (
long double)val64 / 1000000000.0;
141 EM_PRINT(
" %s: %" PRId64
"ns (%Lfs)\n", conf_str, val64, sec);
146 conf_str =
"dispatch.sched_wait_ns";
148 ret = em_libconfig_lookup_int64(&
em_shm->libconfig, conf_str, &val64);
149 if (unlikely(!ret)) {
150 EM_LOG(EM_LOG_ERR,
"Config option '%s' not found.\n", conf_str);
155 EM_LOG(EM_LOG_ERR,
"Bad config value '%s = %" PRId64
"'\n",
161 em_shm->
opt.dispatch.sched_wait_ns = val64;
166 EM_PRINT(
" %s: no-wait (0 ns)\n", conf_str);
167 }
else if (val64 == -1) {
169 EM_PRINT(
" %s: wait indefinitely (inf. ns)\n", conf_str);
172 sec = (
long double)val64 / 1000000000.0;
173 EM_PRINT(
" %s: wait %" PRId64
"ns (%Lfs)\n", conf_str, val64, sec);
178 EM_PRINT(
" %s: DISABLED (build time), using no-wait (0 ns)\n", conf_str);
184 conf_str =
"dispatch.sched_pause";
185 ret = em_libconfig_lookup_bool(&
em_shm->libconfig, conf_str, &val_bool);
186 if (unlikely(!ret)) {
187 EM_LOG(EM_LOG_ERR,
"Config option '%s' not found\n", conf_str);
191 em_shm->
opt.dispatch.sched_pause = val_bool;
192 EM_PRINT(
" %s: %s(%d)\n", conf_str, val_bool ?
"true" :
"false",
200 if (read_config_file())
220 odp_time_local_from_ns(
em_shm->
opt.dispatch.poll_ctrl_interval_ns);
222 odp_time_local_from_ns(
em_shm->
opt.dispatch.poll_drain_interval_ns);
225 odp_time_t now = odp_time_local();
241 if (odp_time_cmp(period, poll_period) != 0)
ENV_LOCAL em_locm_t em_locm
#define EM_SCHED_WAIT_ENABLE
unsigned int dispatch_cnt
unsigned int poll_drain_dispatch_cnt
odp_time_t poll_ctrl_interval_time
odp_time_t dispatch_last_run
odp_time_t poll_drain_dispatch_last_run
odp_time_t poll_drain_interval_time
cfgfile_opt_cache_t opt_cache