Blame view

kernel/linux-rt-4.4.41/include/uapi/linux/cramfs_fs.h 2.7 KB
5113f6f70   김현기   kernel add
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
  #ifndef _UAPI__CRAMFS_H
  #define _UAPI__CRAMFS_H
  
  #include <linux/types.h>
  #include <linux/magic.h>
  
  #define CRAMFS_SIGNATURE	"Compressed ROMFS"
  
  /*
   * Width of various bitfields in struct cramfs_inode.
   * Primarily used to generate warnings in mkcramfs.
   */
  #define CRAMFS_MODE_WIDTH 16
  #define CRAMFS_UID_WIDTH 16
  #define CRAMFS_SIZE_WIDTH 24
  #define CRAMFS_GID_WIDTH 8
  #define CRAMFS_NAMELEN_WIDTH 6
  #define CRAMFS_OFFSET_WIDTH 26
  
  /*
   * Since inode.namelen is a unsigned 6-bit number, the maximum cramfs
   * path length is 63 << 2 = 252.
   */
  #define CRAMFS_MAXPATHLEN (((1 << CRAMFS_NAMELEN_WIDTH) - 1) << 2)
  
  /*
   * Reasonably terse representation of the inode data.
   */
  struct cramfs_inode {
  	__u32 mode:CRAMFS_MODE_WIDTH, uid:CRAMFS_UID_WIDTH;
  	/* SIZE for device files is i_rdev */
  	__u32 size:CRAMFS_SIZE_WIDTH, gid:CRAMFS_GID_WIDTH;
  	/* NAMELEN is the length of the file name, divided by 4 and
             rounded up.  (cramfs doesn't support hard links.) */
  	/* OFFSET: For symlinks and non-empty regular files, this
  	   contains the offset (divided by 4) of the file data in
  	   compressed form (starting with an array of block pointers;
  	   see README).  For non-empty directories it is the offset
  	   (divided by 4) of the inode of the first file in that
  	   directory.  For anything else, offset is zero. */
  	__u32 namelen:CRAMFS_NAMELEN_WIDTH, offset:CRAMFS_OFFSET_WIDTH;
  };
  
  struct cramfs_info {
  	__u32 crc;
  	__u32 edition;
  	__u32 blocks;
  	__u32 files;
  };
  
  /*
   * Superblock information at the beginning of the FS.
   */
  struct cramfs_super {
  	__u32 magic;			/* 0x28cd3d45 - random number */
  	__u32 size;			/* length in bytes */
  	__u32 flags;			/* feature flags */
  	__u32 future;			/* reserved for future use */
  	__u8 signature[16];		/* "Compressed ROMFS" */
  	struct cramfs_info fsid;	/* unique filesystem info */
  	__u8 name[16];			/* user-defined name */
  	struct cramfs_inode root;	/* root inode data */
  };
  
  /*
   * Feature flags
   *
   * 0x00000000 - 0x000000ff: features that work for all past kernels
   * 0x00000100 - 0xffffffff: features that don't work for past kernels
   */
  #define CRAMFS_FLAG_FSID_VERSION_2	0x00000001	/* fsid version #2 */
  #define CRAMFS_FLAG_SORTED_DIRS		0x00000002	/* sorted dirs */
  #define CRAMFS_FLAG_HOLES		0x00000100	/* support for holes */
  #define CRAMFS_FLAG_WRONG_SIGNATURE	0x00000200	/* reserved */
  #define CRAMFS_FLAG_SHIFTED_ROOT_OFFSET	0x00000400	/* shifted root fs */
  
  /*
   * Valid values in super.flags.  Currently we refuse to mount
   * if (flags & ~CRAMFS_SUPPORTED_FLAGS).  Maybe that should be
   * changed to test super.future instead.
   */
  #define CRAMFS_SUPPORTED_FLAGS	( 0x000000ff \
  				| CRAMFS_FLAG_HOLES \
  				| CRAMFS_FLAG_WRONG_SIGNATURE \
  				| CRAMFS_FLAG_SHIFTED_ROOT_OFFSET )
  
  
  #endif /* _UAPI__CRAMFS_H */