1655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/****************************************************************************
2655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
3655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
4655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   This header was automatically generated from a Linux kernel header
5655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   of the same name, to make information necessary for userspace to
6655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   call into the kernel available to libc.  It contains only constants,
7655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   structures, and macros generated from the original header, and thus,
8655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   contains no copyrightable information.
9655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
10655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   To edit the content of this header, modify the corresponding
11655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   source file (e.g. under external/kernel-headers/original/) then
12655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   run bionic/libc/kernel/tools/update_all.py
13655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
14655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   Any manual change here will be lost the next time this script will
15655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   be run. You've been warned!
16655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
17655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
18655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************/
19655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifndef _UAPI__CRAMFS_H
20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define _UAPI__CRAMFS_H
21655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/types.h>
22655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/magic.h>
23655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CRAMFS_SIGNATURE "Compressed ROMFS"
24655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CRAMFS_MODE_WIDTH 16
25655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CRAMFS_UID_WIDTH 16
26655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CRAMFS_SIZE_WIDTH 24
27655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CRAMFS_GID_WIDTH 8
28655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CRAMFS_NAMELEN_WIDTH 6
29655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CRAMFS_OFFSET_WIDTH 26
30655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CRAMFS_MAXPATHLEN (((1 << CRAMFS_NAMELEN_WIDTH) - 1) << 2)
31655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct cramfs_inode {
32d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 mode : CRAMFS_MODE_WIDTH, uid : CRAMFS_UID_WIDTH;
33d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 size : CRAMFS_SIZE_WIDTH, gid : CRAMFS_GID_WIDTH;
34d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 namelen : CRAMFS_NAMELEN_WIDTH, offset : CRAMFS_OFFSET_WIDTH;
35655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
36655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct cramfs_info {
37d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 crc;
38d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 edition;
39d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 blocks;
40d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 files;
41655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
42655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct cramfs_super {
43d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 magic;
44d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 size;
45d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 flags;
46d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 future;
47d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 signature[16];
48d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct cramfs_info fsid;
49d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 name[16];
50d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct cramfs_inode root;
51655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
52655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CRAMFS_FLAG_FSID_VERSION_2 0x00000001
53655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CRAMFS_FLAG_SORTED_DIRS 0x00000002
54655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CRAMFS_FLAG_HOLES 0x00000100
55655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CRAMFS_FLAG_WRONG_SIGNATURE 0x00000200
56655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define CRAMFS_FLAG_SHIFTED_ROOT_OFFSET 0x00000400
57934ec9495505d234b2c2fa284470c2f44aae9de9Christopher Ferris#define CRAMFS_FLAG_EXT_BLOCK_POINTERS 0x00000800
58934ec9495505d234b2c2fa284470c2f44aae9de9Christopher Ferris#define CRAMFS_SUPPORTED_FLAGS (0x000000ff | CRAMFS_FLAG_HOLES | CRAMFS_FLAG_WRONG_SIGNATURE | CRAMFS_FLAG_SHIFTED_ROOT_OFFSET | CRAMFS_FLAG_EXT_BLOCK_POINTERS)
59934ec9495505d234b2c2fa284470c2f44aae9de9Christopher Ferris#define CRAMFS_BLK_FLAG_UNCOMPRESSED (1 << 31)
60934ec9495505d234b2c2fa284470c2f44aae9de9Christopher Ferris#define CRAMFS_BLK_FLAG_DIRECT_PTR (1 << 30)
61934ec9495505d234b2c2fa284470c2f44aae9de9Christopher Ferris#define CRAMFS_BLK_FLAGS (CRAMFS_BLK_FLAG_UNCOMPRESSED | CRAMFS_BLK_FLAG_DIRECT_PTR)
62934ec9495505d234b2c2fa284470c2f44aae9de9Christopher Ferris#define CRAMFS_BLK_DIRECT_PTR_SHIFT 2
63655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif
64