Linux Audio

Check our new training course

In-person Linux kernel drivers training

Jun 16-20, 2025
Register
Loading...
v5.9
 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
 7struct request;
 
 
 8
 9#ifdef CONFIG_BLK_DEV_BSG
10struct bsg_ops {
11	int	(*check_proto)(struct sg_io_v4 *hdr);
12	int	(*fill_hdr)(struct request *rq, struct sg_io_v4 *hdr,
13				fmode_t mode);
14	int	(*complete_rq)(struct request *rq, struct sg_io_v4 *hdr);
15	void	(*free_rq)(struct request *rq);
16};
17
18struct bsg_class_device {
19	struct device *class_dev;
20	int minor;
21	struct request_queue *queue;
22	const struct bsg_ops *ops;
23};
24
25int bsg_register_queue(struct request_queue *q, struct device *parent,
26		const char *name, const struct bsg_ops *ops);
27int bsg_scsi_register_queue(struct request_queue *q, struct device *parent);
28void bsg_unregister_queue(struct request_queue *q);
29#else
30static inline int bsg_scsi_register_queue(struct request_queue *q,
31		struct device *parent)
32{
33	return 0;
34}
35static inline void bsg_unregister_queue(struct request_queue *q)
36{
37}
38#endif /* CONFIG_BLK_DEV_BSG */
39#endif /* _LINUX_BSG_H */
v6.9.4
 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
 7struct bsg_device;
 8struct device;
 9struct request_queue;
10
11typedef int (bsg_sg_io_fn)(struct request_queue *, struct sg_io_v4 *hdr,
12		bool open_for_write, unsigned int timeout);
 
 
 
 
 
 
13
14struct bsg_device *bsg_register_queue(struct request_queue *q,
15		struct device *parent, const char *name,
16		bsg_sg_io_fn *sg_io_fn);
17void bsg_unregister_queue(struct bsg_device *bcd);
 
 
18
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19#endif /* _LINUX_BSG_H */