Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
 1/*
 2 * loop.h
 3 *
 4 * Written by Theodore Ts'o, 3/29/93.
 5 *
 6 * Copyright 1993 by Theodore Ts'o.  Redistribution of this file is
 7 * permitted under the GNU General Public License.
 8 */
 9#ifndef _LINUX_LOOP_H
10#define _LINUX_LOOP_H
11
12#include <linux/bio.h>
13#include <linux/blkdev.h>
14#include <linux/spinlock.h>
15#include <linux/mutex.h>
16#include <uapi/linux/loop.h>
17
18/* Possible states of device */
19enum {
20	Lo_unbound,
21	Lo_bound,
22	Lo_rundown,
23};
24
25struct loop_func_table;
26
27struct loop_device {
28	int		lo_number;
29	int		lo_refcnt;
30	loff_t		lo_offset;
31	loff_t		lo_sizelimit;
32	int		lo_flags;
33	int		(*transfer)(struct loop_device *, int cmd,
34				    struct page *raw_page, unsigned raw_off,
35				    struct page *loop_page, unsigned loop_off,
36				    int size, sector_t real_block);
37	char		lo_file_name[LO_NAME_SIZE];
38	char		lo_crypt_name[LO_NAME_SIZE];
39	char		lo_encrypt_key[LO_KEY_SIZE];
40	int		lo_encrypt_key_size;
41	struct loop_func_table *lo_encryption;
42	__u32           lo_init[2];
43	kuid_t		lo_key_owner;	/* Who set the key */
44	int		(*ioctl)(struct loop_device *, int cmd, 
45				 unsigned long arg); 
46
47	struct file *	lo_backing_file;
48	struct block_device *lo_device;
49	unsigned	lo_blocksize;
50	void		*key_data; 
51
52	gfp_t		old_gfp_mask;
53
54	spinlock_t		lo_lock;
55	struct bio_list		lo_bio_list;
56	unsigned int		lo_bio_count;
57	int			lo_state;
58	struct mutex		lo_ctl_mutex;
59	struct task_struct	*lo_thread;
60	wait_queue_head_t	lo_event;
61	/* wait queue for incoming requests */
62	wait_queue_head_t	lo_req_wait;
63
64	struct request_queue	*lo_queue;
65	struct gendisk		*lo_disk;
66};
67
68/* Support for loadable transfer modules */
69struct loop_func_table {
70	int number;	/* filter type */ 
71	int (*transfer)(struct loop_device *lo, int cmd,
72			struct page *raw_page, unsigned raw_off,
73			struct page *loop_page, unsigned loop_off,
74			int size, sector_t real_block);
75	int (*init)(struct loop_device *, const struct loop_info64 *); 
76	/* release is called from loop_unregister_transfer or clr_fd */
77	int (*release)(struct loop_device *); 
78	int (*ioctl)(struct loop_device *, int cmd, unsigned long arg);
79	struct module *owner;
80}; 
81
82int loop_register_transfer(struct loop_func_table *funcs);
83int loop_unregister_transfer(int number); 
84
85#endif