1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _LINUX_BSG_H 3 #define _LINUX_BSG_H 4 5 #include <uapi/linux/bsg.h> 6 7 struct bsg_device; 8 struct device; 9 struct request; 10 struct request_queue; 11 12 struct bsg_ops { 13 int (*check_proto)(struct sg_io_v4 *hdr); 14 int (*fill_hdr)(struct request *rq, struct sg_io_v4 *hdr, 15 fmode_t mode); 16 int (*complete_rq)(struct request *rq, struct sg_io_v4 *hdr); 17 void (*free_rq)(struct request *rq); 18 }; 19 20 struct bsg_device *bsg_register_queue(struct request_queue *q, 21 struct device *parent, const char *name, 22 const struct bsg_ops *ops); 23 void bsg_unregister_queue(struct bsg_device *bcd); 24 25 #endif /* _LINUX_BSG_H */ 26