include/mem/movealloc.h View source View on GitHub
struct movealloc_callback_node {
movealloc_callback callback;
void *a;
struct list_head list;
};
struct movealloc_callback_chain {
struct list_head list;
};
typedef void (*movealloc_callback)(void * a, void * b);
void movealloc_internal(size_t domain, void *ptr, enum vmm_flags vf);
void movealloc_exec_all(void);
#define movealloc_2(d, p) movealloc_internal((d), (p), VMM_FLAG_NONE)
#define movealloc_3(d, p, vf) movealloc_internal((d), (p), (vf))
#define movealloc(...) _DISPATCH(movealloc, PP_NARG(__VA_ARGS__))(__VA_ARGS__)
#define movealloc_callback_node_from_list_node(ln) \
(container_of(ln, struct movealloc_callback_node, list))
#define MOVEALLOC_REGISTER_CALL(name, callback, param1, param2) \
static LINKER_SECTION_OBJECT(struct movealloc_callback_node, \
movealloc_callbacks) \
movealloc_##name = {callback, param1, param2, .list = {0}};