aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/linux-headers/linux/loop.h
blob: 7b7bd4076589b23dc719bb2073010dbdb582aa68 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */ 
/* 
 * include/linux/loop.h 
 * 
 * Written by Theodore Ts'o, 3/29/93. 
 * 
 * Copyright 1993 by Theodore Ts'o.  Redistribution of this file is 
 * permitted under the GNU General Public License. 
 */ 
#ifndef _LINUX_LOOP_H 
#define _LINUX_LOOP_H 
 
 
#define LO_NAME_SIZE	64 
#define LO_KEY_SIZE	32 
 
 
/* 
 * Loop flags 
 */ 
enum { 
	LO_FLAGS_READ_ONLY	= 1, 
	LO_FLAGS_AUTOCLEAR	= 4, 
	LO_FLAGS_PARTSCAN	= 8, 
	LO_FLAGS_DIRECT_IO	= 16, 
}; 
 
#include <asm/posix_types.h>	/* for __kernel_old_dev_t */ 
#include <linux/types.h>	/* for __u64 */ 
 
/* Backwards compatibility version */ 
struct loop_info { 
	int		   lo_number;		/* ioctl r/o */ 
	__kernel_old_dev_t lo_device; 		/* ioctl r/o */ 
	unsigned long	   lo_inode; 		/* ioctl r/o */ 
	__kernel_old_dev_t lo_rdevice; 		/* ioctl r/o */ 
	int		   lo_offset; 
	int		   lo_encrypt_type; 
	int		   lo_encrypt_key_size; 	/* ioctl w/o */ 
	int		   lo_flags;			/* ioctl r/o */ 
	char		   lo_name[LO_NAME_SIZE]; 
	unsigned char	   lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */ 
	unsigned long	   lo_init[2]; 
	char		   reserved[4]; 
}; 
 
struct loop_info64 { 
	__u64		   lo_device;			/* ioctl r/o */ 
	__u64		   lo_inode;			/* ioctl r/o */ 
	__u64		   lo_rdevice;			/* ioctl r/o */ 
	__u64		   lo_offset; 
	__u64		   lo_sizelimit;/* bytes, 0 == max available */ 
	__u32		   lo_number;			/* ioctl r/o */ 
	__u32		   lo_encrypt_type; 
	__u32		   lo_encrypt_key_size;		/* ioctl w/o */ 
	__u32		   lo_flags;			/* ioctl r/o */ 
	__u8		   lo_file_name[LO_NAME_SIZE]; 
	__u8		   lo_crypt_name[LO_NAME_SIZE]; 
	__u8		   lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */ 
	__u64		   lo_init[2]; 
}; 
 
/* 
 * Loop filter types 
 */ 
 
#define LO_CRYPT_NONE		0 
#define LO_CRYPT_XOR		1 
#define LO_CRYPT_DES		2 
#define LO_CRYPT_FISH2		3    /* Twofish encryption */ 
#define LO_CRYPT_BLOW		4 
#define LO_CRYPT_CAST128	5 
#define LO_CRYPT_IDEA		6 
#define LO_CRYPT_DUMMY		9 
#define LO_CRYPT_SKIPJACK	10 
#define LO_CRYPT_CRYPTOAPI	18 
#define MAX_LO_CRYPT		20 
 
/* 
 * IOCTL commands --- we will commandeer 0x4C ('L') 
 */ 
 
#define LOOP_SET_FD		0x4C00 
#define LOOP_CLR_FD		0x4C01 
#define LOOP_SET_STATUS		0x4C02 
#define LOOP_GET_STATUS		0x4C03 
#define LOOP_SET_STATUS64	0x4C04 
#define LOOP_GET_STATUS64	0x4C05 
#define LOOP_CHANGE_FD		0x4C06 
#define LOOP_SET_CAPACITY	0x4C07 
#define LOOP_SET_DIRECT_IO	0x4C08 
#define LOOP_SET_BLOCK_SIZE	0x4C09 
 
/* /dev/loop-control interface */ 
#define LOOP_CTL_ADD		0x4C80 
#define LOOP_CTL_REMOVE		0x4C81 
#define LOOP_CTL_GET_FREE	0x4C82 
#endif /* _LINUX_LOOP_H */