#ifndef LIBPMEMOBJ_ACTION_BASE_H
#define LIBPMEMOBJ_ACTION_BASE_H 1
#include <libpmemobj/base.h>
#ifdef __cplusplus
extern "C" {
#endif
enum pobj_action_type {
POBJ_ACTION_TYPE_HEAP,
POBJ_ACTION_TYPE_MEM,
POBJ_MAX_ACTION_TYPE
};
struct pobj_action {
enum pobj_action_type type;
uint32_t data[3];
union {
struct {
uint64_t offset;
} heap;
uint64_t data2[14];
};
};
#define POBJ_MAX_ACTIONS 60
#define POBJ_ACTION_XRESERVE_VALID_FLAGS\
(POBJ_XALLOC_CLASS_MASK | POBJ_XALLOC_ZERO)
PMEMoid pmemobj_reserve(PMEMobjpool *pop, struct pobj_action *act,
size_t size, uint64_t type_num);
PMEMoid pmemobj_xreserve(PMEMobjpool *pop, struct pobj_action *act,
size_t size, uint64_t type_num, uint64_t flags);
void pmemobj_set_value(PMEMobjpool *pop, struct pobj_action *act,
uint64_t *ptr, uint64_t value);
void pmemobj_publish(PMEMobjpool *pop, struct pobj_action *actv, int actvcnt);
int pmemobj_tx_publish(struct pobj_action *actv, int actvcnt);
void pmemobj_cancel(PMEMobjpool *pop, struct pobj_action *actv, int actvcnt);
#ifdef __cplusplus
}
#endif
#endif