17#include "xtc_export.h"
24typedef struct xtc_exec xtc_exec_t;
70XTC_API
int xtc_exec_init(xtc_exec_t **out,
int n_loops);
71XTC_API
int xtc_exec_fini(xtc_exec_t *exec);
72XTC_API
int xtc_exec_run(xtc_exec_t *exec);
108XTC_API
void xtc_exec_set_service_mode(xtc_exec_t *exec,
int on);
109XTC_API
int xtc_exec_get_service_mode(xtc_exec_t *exec);
139XTC_API
void xtc_exec_set_eager_rebalance(xtc_exec_t *exec,
int on);
140XTC_API
int xtc_exec_get_eager_rebalance(xtc_exec_t *exec);
141XTC_API
void xtc_exec_set_steal_backoff(xtc_exec_t *exec,
int on);
142XTC_API
int xtc_exec_get_steal_backoff(xtc_exec_t *exec);
144int xtc_exec_set_preempt(xtc_exec_t *exec, int64_t interval_ns);
145XTC_API
int xtc_exec_stop(xtc_exec_t *exec);
147XTC_API
int xtc_exec_n_loops(xtc_exec_t *exec);
154XTC_API
int xtc_exec_loop_id(
void);
161XTC_API
int xtc_shard_id(
void);
162XTC_API
int xtc_shard_count(
void);
165XTC_API xtc_loop_t *xtc_exec_loop(xtc_exec_t *exec,
int idx);
178typedef struct xtc_loop_stats {
186XTC_API
int xtc_exec_loop_stats(xtc_exec_t *exec,
int idx,
xtc_loop_stats_t *out);
192XTC_API
int xtc_exec_spawn(xtc_exec_t *exec, xtc_task_fn fn,
void *user,
193 xtc_task_t **out_task);
194XTC_API
int xtc_exec_spawn_on(xtc_exec_t *exec,
int loop_idx,
195 xtc_task_fn fn,
void *user, xtc_task_t **out_task);
196XTC_API
int xtc_exec_async(xtc_exec_t *exec, xtc_coro_fn fn,
void *arg,
197 xtc_task_t **out_task);
198XTC_API
int xtc_exec_async_on(xtc_exec_t *exec,
int loop_idx,
199 xtc_coro_fn fn,
void *arg, xtc_task_t **out_task);
233XTC_API
int xtc_exec_class_create(xtc_loop_t *loop,
int shares,
234 int64_t latency_ns, xtc_exec_class_t *out);
235XTC_API
int xtc_exec_class_shares(xtc_exec_class_t cls);
236XTC_API int64_t xtc_exec_class_latency(xtc_exec_class_t cls);
237XTC_API uint64_t xtc_exec_class_runs(xtc_exec_class_t cls);
238XTC_API uint64_t xtc_exec_class_vruntime(xtc_exec_class_t cls);
265typedef void (*xtc_stall_cb)(xtc_loop_t *loop, xtc_task_t *task,
266 int64_t ran_ns, int64_t budget_ns,
void *user);
267XTC_API
void xtc_loop_set_stall_budget(xtc_loop_t *loop, int64_t budget_ns);
268XTC_API
void xtc_loop_set_stall_cb(xtc_loop_t *loop, xtc_stall_cb cb,
270XTC_API
void xtc_exec_set_stall_budget(xtc_exec_t *exec, int64_t budget_ns);
271XTC_API uint64_t xtc_loop_stall_count(
const xtc_loop_t *loop);