xref: /linux-6.15/include/linux/bsg.h (revision ead09dd3)
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