aos/include/aos/deferred.h
Daniel Schwyn 6d444bf552 Main handout
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>
2022-03-03 14:57:51 +01:00

57 lines
1.7 KiB
C

/**
* \file
* \brief Deferred events (ie. timers)
*/
/*
* Copyright (c) 2009, 2011, 2013, ETH Zurich.
* All rights reserved.
*
* This file is distributed under the terms in the attached LICENSE file.
* If you do not find this file, copies can be found by writing to:
* ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
*/
#ifndef BARRELFISH_DEFERRED_H
#define BARRELFISH_DEFERRED_H
#include <sys/cdefs.h>
#include <aos/waitset.h>
#include <barrelfish_kpi/dispatcher_handle.h>
__BEGIN_DECLS
struct deferred_event {
struct waitset_chanstate waitset_state; ///< Waitset state
struct deferred_event *next, *prev; ///< Next/prev in dispatcher queue
systime_t time; ///< System time for event
};
systime_t get_system_time(void);
void deferred_event_init(struct deferred_event *event);
errval_t deferred_event_register(struct deferred_event *event,
struct waitset *ws, delayus_t delay,
struct event_closure closure);
errval_t deferred_event_cancel(struct deferred_event *event);
errval_t barrelfish_usleep(delayus_t delay);
struct periodic_event {
struct deferred_event de;
struct event_closure cl;
struct waitset *waitset;
delayus_t period;
};
errval_t periodic_event_create(struct periodic_event *event, struct waitset *ws,
delayus_t period, struct event_closure closure);
errval_t periodic_event_cancel(struct periodic_event *event);
// XXX: internal to libbarrelfish; should be in another header file
void trigger_deferred_events_disabled(dispatcher_handle_t dh, systime_t now);
__END_DECLS
#endif // BARRELFISH_DEFERRED_H