42#ifndef _CTL_BACKEND_H_
43#define _CTL_BACKEND_H_
57#define CTL_BACKEND_DECLARE(name, driver) \
58 static int name ## _modevent(module_t mod, int type, void *data) \
62 return (ctl_backend_register( \
63 (struct ctl_backend_driver *)data)); \
66 return (ctl_backend_deregister( \
67 (struct ctl_backend_driver *)data)); \
74 static moduledata_t name ## _mod = { \
79 DECLARE_MODULE(name, name ## _mod, SI_SUB_CONFIGURE, SI_ORDER_FOURTH); \
80 MODULE_DEPEND(name, ctl, 1, 1, 1); \
81 MODULE_DEPEND(name, cam, 1, 1, 1)
179typedef int (*
be_ioctl_t)(
struct cdev *dev, u_long cmd, caddr_t addr,
int flag,
195#ifdef CS_BE_CONFIG_MOVE_DONE_IS_NOT_USED
void(* be_vfunc_t)(union ctl_io *io)
int ctl_add_lun(struct ctl_be_lun *be_lun)
int ctl_start_lun(struct ctl_be_lun *be_lun)
int(* be_luninfo_t)(struct ctl_be_lun *be_lun, struct sbuf *sb)
int ctl_lun_no_media(struct ctl_be_lun *be_lun)
int ctl_lun_ejected(struct ctl_be_lun *be_lun)
int(* be_ioctl_t)(struct cdev *dev, u_long cmd, caddr_t addr, int flag, struct thread *td)
int ctl_remove_lun(struct ctl_be_lun *be_lun)
int ctl_lun_has_media(struct ctl_be_lun *be_lun)
uint64_t(* be_lunattr_t)(struct ctl_be_lun *be_lun, const char *attrname)
void(* be_callback_t)(struct ctl_be_lun *be_lun)
int ctl_backend_register(struct ctl_backend_driver *be)
int ctl_lun_primary(struct ctl_be_lun *be_lun)
int(* be_func_t)(union ctl_io *io)
int ctl_backend_deregister(struct ctl_backend_driver *be)
int ctl_stop_lun(struct ctl_be_lun *be_lun)
int ctl_lun_secondary(struct ctl_be_lun *be_lun)
void ctl_lun_capacity_changed(struct ctl_be_lun *be_lun)
int(* be_shutdown_t)(void)
struct ctl_backend_driver * ctl_backend_find(char *backend_name)
STAILQ_ENTRY(ctl_backend_driver) links
char name[CTL_BE_NAME_LEN]
uint8_t device_id[CTL_DEVID_LEN]
uint8_t serial_num[CTL_SN_LEN]
be_callback_t lun_shutdown
struct ctl_backend_driver * be
ctl_backend_lun_flags flags
STAILQ_ENTRY(ctl_be_lun) links