Skip to content

movealloc

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}};