qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

linux_loop.h (2774B)


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