blob: f16f14e39faf6d800aee1db0b4f15e757d794574 [file]
#ifndef _DLM_H
#define _DLM_H
#ifdef NO_COROSYNC
#define CS_OK 1
typedef uint64_t cmap_handle_t;
#else
#include <corosync/cmap.h>
#endif
#ifndef NO_DLM
#include <libdlm.h>
#include <errno.h>
#else
#define LKF_NOQUEUE 0x00000001
#define LKM_PWMODE 4
#define EUNLOCK 0x10002
typedef void *dlm_lshandle_t;
struct dlm_lksb {
int sb_status;
uint32_t sb_lkid;
char sb_flags;
char *sb_lvbptr;
};
#endif
struct cmap_hooks {
void *cmap_handle; /* corosync lib related */
int (*initialize)(cmap_handle_t *handle);
int (*get_string)(cmap_handle_t handle,
const char *string,
char **name);
int (*finalize)(cmap_handle_t handle);
};
void set_cmap_hooks(void);
struct dlm_hooks {
void *dlm_handle; /* dlm lib related */
dlm_lshandle_t (*create_lockspace)(const char *name,
unsigned int mode);
dlm_lshandle_t (*open_lockspace)(const char *name);
int (*release_lockspace)(const char *name, dlm_lshandle_t ls,
int force);
int (*ls_lock)(dlm_lshandle_t lockspace, uint32_t mode,
struct dlm_lksb *lksb, uint32_t flags,
const void *name, unsigned int namelen,
uint32_t parent, void (*astaddr) (void *astarg),
void *astarg, void (*bastaddr) (void *astarg),
void *range);
int (*ls_unlock_wait)(dlm_lshandle_t lockspace, uint32_t lkid,
uint32_t flags, struct dlm_lksb *lksb);
int (*ls_get_fd)(dlm_lshandle_t ls);
int (*dispatch)(int fd);
};
void set_dlm_hooks(void);
int dlm_funs_ready(void);
#endif /* _dlm_H */