0001
0002
0003
0004
0005
0006
0007
0008 #ifndef _LINUX_QNX6_FS_H
0009 #define _LINUX_QNX6_FS_H
0010
0011 #include <linux/types.h>
0012 #include <linux/magic.h>
0013
0014 #define QNX6_ROOT_INO 1
0015
0016
0017 #define QNX6_FILE_DIRECTORY 0x01
0018 #define QNX6_FILE_DELETED 0x02
0019 #define QNX6_FILE_NORMAL 0x03
0020
0021 #define QNX6_SUPERBLOCK_SIZE 0x200
0022 #define QNX6_SUPERBLOCK_AREA 0x1000
0023 #define QNX6_BOOTBLOCK_SIZE 0x2000
0024 #define QNX6_DIR_ENTRY_SIZE 0x20
0025 #define QNX6_INODE_SIZE 0x80
0026 #define QNX6_INODE_SIZE_BITS 7
0027
0028 #define QNX6_NO_DIRECT_POINTERS 16
0029 #define QNX6_PTR_MAX_LEVELS 5
0030
0031
0032 #define QNX6_SHORT_NAME_MAX 27
0033 #define QNX6_LONG_NAME_MAX 510
0034
0035
0036 #define QNX6_MOUNT_MMI_FS 0x010000
0037
0038
0039
0040
0041
0042 struct qnx6_inode_entry {
0043 __fs64 di_size;
0044 __fs32 di_uid;
0045 __fs32 di_gid;
0046 __fs32 di_ftime;
0047 __fs32 di_mtime;
0048 __fs32 di_atime;
0049 __fs32 di_ctime;
0050 __fs16 di_mode;
0051 __fs16 di_ext_mode;
0052 __fs32 di_block_ptr[QNX6_NO_DIRECT_POINTERS];
0053 __u8 di_filelevels;
0054 __u8 di_status;
0055 __u8 di_unknown2[2];
0056 __fs32 di_zero2[6];
0057 };
0058
0059
0060
0061
0062
0063
0064 struct qnx6_dir_entry {
0065 __fs32 de_inode;
0066 __u8 de_size;
0067 char de_fname[QNX6_SHORT_NAME_MAX];
0068 };
0069
0070
0071
0072
0073 struct qnx6_long_dir_entry {
0074 __fs32 de_inode;
0075 __u8 de_size;
0076 __u8 de_unknown[3];
0077 __fs32 de_long_inode;
0078 __fs32 de_checksum;
0079 };
0080
0081 struct qnx6_long_filename {
0082 __fs16 lf_size;
0083 __u8 lf_fname[QNX6_LONG_NAME_MAX];
0084 };
0085
0086 struct qnx6_root_node {
0087 __fs64 size;
0088 __fs32 ptr[QNX6_NO_DIRECT_POINTERS];
0089 __u8 levels;
0090 __u8 mode;
0091 __u8 spare[6];
0092 };
0093
0094 struct qnx6_super_block {
0095 __fs32 sb_magic;
0096 __fs32 sb_checksum;
0097 __fs64 sb_serial;
0098 __fs32 sb_ctime;
0099 __fs32 sb_atime;
0100 __fs32 sb_flags;
0101 __fs16 sb_version1;
0102 __fs16 sb_version2;
0103 __u8 sb_volumeid[16];
0104 __fs32 sb_blocksize;
0105 __fs32 sb_num_inodes;
0106 __fs32 sb_free_inodes;
0107 __fs32 sb_num_blocks;
0108 __fs32 sb_free_blocks;
0109 __fs32 sb_allocgroup;
0110 struct qnx6_root_node Inode;
0111 struct qnx6_root_node Bitmap;
0112 struct qnx6_root_node Longfile;
0113 struct qnx6_root_node Unknown;
0114 };
0115
0116
0117 struct qnx6_mmi_super_block {
0118 __fs32 sb_magic;
0119 __fs32 sb_checksum;
0120 __fs64 sb_serial;
0121 __u8 sb_spare0[12];
0122 __u8 sb_id[12];
0123 __fs32 sb_blocksize;
0124 __fs32 sb_num_inodes;
0125 __fs32 sb_free_inodes;
0126 __fs32 sb_num_blocks;
0127 __fs32 sb_free_blocks;
0128 __u8 sb_spare1[4];
0129 struct qnx6_root_node Inode;
0130 struct qnx6_root_node Bitmap;
0131 struct qnx6_root_node Longfile;
0132 struct qnx6_root_node Unknown;
0133 };
0134
0135 #endif