1 /*
2  * This file is auto-generated. Modifications will be lost.
3  *
4  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5  * for more information.
6  */
7 #ifndef _UAPI__CRAMFS_H
8 #define _UAPI__CRAMFS_H
9 #include <linux/types.h>
10 #include <linux/magic.h>
11 #define CRAMFS_SIGNATURE "Compressed ROMFS"
12 #define CRAMFS_MODE_WIDTH 16
13 #define CRAMFS_UID_WIDTH 16
14 #define CRAMFS_SIZE_WIDTH 24
15 #define CRAMFS_GID_WIDTH 8
16 #define CRAMFS_NAMELEN_WIDTH 6
17 #define CRAMFS_OFFSET_WIDTH 26
18 #define CRAMFS_MAXPATHLEN (((1 << CRAMFS_NAMELEN_WIDTH) - 1) << 2)
19 struct cramfs_inode {
20   __u32 mode : CRAMFS_MODE_WIDTH, uid : CRAMFS_UID_WIDTH;
21   __u32 size : CRAMFS_SIZE_WIDTH, gid : CRAMFS_GID_WIDTH;
22   __u32 namelen : CRAMFS_NAMELEN_WIDTH, offset : CRAMFS_OFFSET_WIDTH;
23 };
24 struct cramfs_info {
25   __u32 crc;
26   __u32 edition;
27   __u32 blocks;
28   __u32 files;
29 };
30 struct cramfs_super {
31   __u32 magic;
32   __u32 size;
33   __u32 flags;
34   __u32 future;
35   __u8 signature[16];
36   struct cramfs_info fsid;
37   __u8 name[16];
38   struct cramfs_inode root;
39 };
40 #define CRAMFS_FLAG_FSID_VERSION_2 0x00000001
41 #define CRAMFS_FLAG_SORTED_DIRS 0x00000002
42 #define CRAMFS_FLAG_HOLES 0x00000100
43 #define CRAMFS_FLAG_WRONG_SIGNATURE 0x00000200
44 #define CRAMFS_FLAG_SHIFTED_ROOT_OFFSET 0x00000400
45 #define CRAMFS_FLAG_EXT_BLOCK_POINTERS 0x00000800
46 #define CRAMFS_SUPPORTED_FLAGS (0x000000ff | CRAMFS_FLAG_HOLES | CRAMFS_FLAG_WRONG_SIGNATURE | CRAMFS_FLAG_SHIFTED_ROOT_OFFSET | CRAMFS_FLAG_EXT_BLOCK_POINTERS)
47 #define CRAMFS_BLK_FLAG_UNCOMPRESSED (1 << 31)
48 #define CRAMFS_BLK_FLAG_DIRECT_PTR (1 << 30)
49 #define CRAMFS_BLK_FLAGS (CRAMFS_BLK_FLAG_UNCOMPRESSED | CRAMFS_BLK_FLAG_DIRECT_PTR)
50 #define CRAMFS_BLK_DIRECT_PTR_SHIFT 2
51 #endif
52