#ifndef _FBSD_COMPAT_SYS_KERNEL_H_
#define _FBSD_COMPAT_SYS_KERNEL_H_
#include <stddef.h>
#include <sys/haiku-module.h>
#include <sys/linker_set.h>
#include <sys/queue.h>
#define hz 1000LL
int32_t _get_ticks();
#define ticks (_get_ticks())
enum sysinit_elem_order {
SI_ORDER_FIRST = 0x0000000,
SI_ORDER_SECOND = 0x0000001,
SI_ORDER_THIRD = 0x0000002,
SI_ORDER_FOURTH = 0x0000003,
SI_ORDER_MIDDLE = 0x1000000,
SI_ORDER_ANY = 0xfffffff
};
typedef void (*system_init_func_t)(void *);
struct sysinit {
const char* name;
enum sysinit_elem_order order;
system_init_func_t func;
const void* arg;
};
#define SYSINIT(uniquifier, subsystem, _order, _func, ident) \
static struct sysinit sysinit_##uniquifier = { \
.name = #uniquifier, \
.order = _order, \
.func = _func, \
.arg = ident, \
}; \
DATA_SET(__freebsd_sysinit, sysinit_##uniquifier)
#define SYSUNINIT(uniquifier, subsystem, _order, _func, ident) \
static struct sysinit sysuninit_##uniquifier = { \
.name = #uniquifier, \
.order = _order, \
.func = _func, \
.arg = ident, \
}; \
DATA_SET(__freebsd_sysuninit, sysuninit_##uniquifier)
typedef void (*ich_func_t)(void *_arg);
struct intr_config_hook {
TAILQ_ENTRY(intr_config_hook) ich_links;
ich_func_t ich_func;
void *ich_arg;
};
int config_intrhook_establish(struct intr_config_hook *hook);
void config_intrhook_disestablish(struct intr_config_hook *hook);
#define TUNABLE_INT(path, var)
#define TUNABLE_INT_FETCH(path, var)
#endif