Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
loop.h
Go to the documentation of this file.
1 /*
2  * include/linux/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 _UAPI_LINUX_LOOP_H
10 #define _UAPI_LINUX_LOOP_H
11 
12 
13 #define LO_NAME_SIZE 64
14 #define LO_KEY_SIZE 32
15 
16 
17 /*
18  * Loop flags
19  */
20 enum {
24 };
25 
26 #include <asm/posix_types.h> /* for __kernel_old_dev_t */
27 #include <linux/types.h> /* for __u64 */
28 
29 /* Backwards compatibility version */
30 struct loop_info {
31  int lo_number; /* ioctl r/o */
32  __kernel_old_dev_t lo_device; /* ioctl r/o */
33  unsigned long lo_inode; /* ioctl r/o */
34  __kernel_old_dev_t lo_rdevice; /* ioctl r/o */
35  int lo_offset;
37  int lo_encrypt_key_size; /* ioctl w/o */
38  int lo_flags; /* ioctl r/o */
40  unsigned char lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
41  unsigned long lo_init[2];
42  char reserved[4];
43 };
44 
45 struct loop_info64 {
46  __u64 lo_device; /* ioctl r/o */
47  __u64 lo_inode; /* ioctl r/o */
48  __u64 lo_rdevice; /* ioctl r/o */
50  __u64 lo_sizelimit;/* bytes, 0 == max available */
51  __u32 lo_number; /* ioctl r/o */
53  __u32 lo_encrypt_key_size; /* ioctl w/o */
54  __u32 lo_flags; /* ioctl r/o */
57  __u8 lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
59 };
60 
61 /*
62  * Loop filter types
63  */
64 
65 #define LO_CRYPT_NONE 0
66 #define LO_CRYPT_XOR 1
67 #define LO_CRYPT_DES 2
68 #define LO_CRYPT_FISH2 3 /* Twofish encryption */
69 #define LO_CRYPT_BLOW 4
70 #define LO_CRYPT_CAST128 5
71 #define LO_CRYPT_IDEA 6
72 #define LO_CRYPT_DUMMY 9
73 #define LO_CRYPT_SKIPJACK 10
74 #define LO_CRYPT_CRYPTOAPI 18
75 #define MAX_LO_CRYPT 20
76 
77 /*
78  * IOCTL commands --- we will commandeer 0x4C ('L')
79  */
80 
81 #define LOOP_SET_FD 0x4C00
82 #define LOOP_CLR_FD 0x4C01
83 #define LOOP_SET_STATUS 0x4C02
84 #define LOOP_GET_STATUS 0x4C03
85 #define LOOP_SET_STATUS64 0x4C04
86 #define LOOP_GET_STATUS64 0x4C05
87 #define LOOP_CHANGE_FD 0x4C06
88 #define LOOP_SET_CAPACITY 0x4C07
89 
90 /* /dev/loop-control interface */
91 #define LOOP_CTL_ADD 0x4C80
92 #define LOOP_CTL_REMOVE 0x4C81
93 #define LOOP_CTL_GET_FREE 0x4C82
94 #endif /* _UAPI_LINUX_LOOP_H */