60 xtc_timer_t *park_timer;
79 _Atomic uint32_t wake_revents;
88 _Atomic
int wake_pending;
108 void (*cleanup)(
void *cleanup_arg);
146 enum xtc_inbox_kind kind;
169 xtc_timer_t **timers;
177 xtc_timer_t *all_timers;
182 struct xtc_slab *timer_slab;
203 _Atomic uint64_t n_tasks_run;
204 _Atomic uint64_t n_steals;
211 unsigned int runs_since_poll;
217 int64_t yield_budget_ns;
218 _Atomic uint64_t n_yield_due;
231 struct xtc_exec *exec;
243int __xtc_loop_enqueue(xtc_loop_t *loop, xtc_task_t *t);
246int __xtc_task_spawn_ex(xtc_loop_t *loop, xtc_task_fn fn,
void *user,
247 int pinned, xtc_task_t **out_task);
248int __xtc_timer_heap_push(xtc_loop_t *loop, xtc_timer_t *t);
249xtc_timer_t *__xtc_timer_heap_pop_due(xtc_loop_t *loop, int64_t now_ns);
250int64_t __xtc_timer_heap_next_deadline(xtc_loop_t *loop);
251void __xtc_task_cancel_park_timer(xtc_task_t *self);
252int __xtc_loop_dispatch_event(xtc_loop_t *loop,
xtc_io_event_t *ev);
257void __xtc_proc_loop_unregister(xtc_loop_t *loop);
259int __xtc_inbox_init(
struct xtc_inbox *ib);
260void __xtc_inbox_fini(
struct xtc_inbox *ib);
261int __xtc_inbox_push(
struct xtc_inbox *ib,
enum xtc_inbox_kind k, xtc_task_t *t);
262int __xtc_inbox_drain(xtc_loop_t *loop);
266extern XTC_THREAD_LOCAL xtc_loop_t *__xtc_current_loop;
279extern void *(*__xtc_fiber_ctx_save)(void);
280extern void (*__xtc_fiber_ctx_restore)(
void *);
290extern void (*__xtc_fiber_kill_check)(void);
298extern void (*__xtc_loop_fini_hook)(xtc_loop_t *loop);