root/include/uapi/linux/loop.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */