diff options
Diffstat (limited to 'include/linux/qnx4_fs.h')
-rw-r--r-- | include/linux/qnx4_fs.h | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/include/linux/qnx4_fs.h b/include/linux/qnx4_fs.h new file mode 100644 index 000000000000..22ba580b0ae8 --- /dev/null +++ b/include/linux/qnx4_fs.h | |||
@@ -0,0 +1,150 @@ | |||
1 | /* | ||
2 | * Name : qnx4_fs.h | ||
3 | * Author : Richard Frowijn | ||
4 | * Function : qnx4 global filesystem definitions | ||
5 | * Version : 1.0.2 | ||
6 | * Last modified : 2000-01-31 | ||
7 | * | ||
8 | * History : 23-03-1998 created | ||
9 | */ | ||
10 | #ifndef _LINUX_QNX4_FS_H | ||
11 | #define _LINUX_QNX4_FS_H | ||
12 | |||
13 | #include <linux/qnxtypes.h> | ||
14 | |||
15 | #define QNX4_ROOT_INO 1 | ||
16 | |||
17 | #define QNX4_MAX_XTNTS_PER_XBLK 60 | ||
18 | /* for di_status */ | ||
19 | #define QNX4_FILE_USED 0x01 | ||
20 | #define QNX4_FILE_MODIFIED 0x02 | ||
21 | #define QNX4_FILE_BUSY 0x04 | ||
22 | #define QNX4_FILE_LINK 0x08 | ||
23 | #define QNX4_FILE_INODE 0x10 | ||
24 | #define QNX4_FILE_FSYSCLEAN 0x20 | ||
25 | |||
26 | #define QNX4_I_MAP_SLOTS 8 | ||
27 | #define QNX4_Z_MAP_SLOTS 64 | ||
28 | #define QNX4_SUPER_MAGIC 0x002f /* qnx4 fs detection */ | ||
29 | #define QNX4_VALID_FS 0x0001 /* Clean fs. */ | ||
30 | #define QNX4_ERROR_FS 0x0002 /* fs has errors. */ | ||
31 | #define QNX4_BLOCK_SIZE 0x200 /* blocksize of 512 bytes */ | ||
32 | #define QNX4_BLOCK_SIZE_BITS 9 /* blocksize shift */ | ||
33 | #define QNX4_DIR_ENTRY_SIZE 0x040 /* dir entry size of 64 bytes */ | ||
34 | #define QNX4_DIR_ENTRY_SIZE_BITS 6 /* dir entry size shift */ | ||
35 | #define QNX4_XBLK_ENTRY_SIZE 0x200 /* xblk entry size */ | ||
36 | #define QNX4_INODES_PER_BLOCK 0x08 /* 512 / 64 */ | ||
37 | |||
38 | /* for filenames */ | ||
39 | #define QNX4_SHORT_NAME_MAX 16 | ||
40 | #define QNX4_NAME_MAX 48 | ||
41 | |||
42 | /* | ||
43 | * This is the original qnx4 inode layout on disk. | ||
44 | */ | ||
45 | struct qnx4_inode_entry { | ||
46 | char di_fname[QNX4_SHORT_NAME_MAX]; | ||
47 | qnx4_off_t di_size; | ||
48 | qnx4_xtnt_t di_first_xtnt; | ||
49 | __u32 di_xblk; | ||
50 | __s32 di_ftime; | ||
51 | __s32 di_mtime; | ||
52 | __s32 di_atime; | ||
53 | __s32 di_ctime; | ||
54 | qnx4_nxtnt_t di_num_xtnts; | ||
55 | qnx4_mode_t di_mode; | ||
56 | qnx4_muid_t di_uid; | ||
57 | qnx4_mgid_t di_gid; | ||
58 | qnx4_nlink_t di_nlink; | ||
59 | __u8 di_zero[4]; | ||
60 | qnx4_ftype_t di_type; | ||
61 | __u8 di_status; | ||
62 | }; | ||
63 | |||
64 | struct qnx4_link_info { | ||
65 | char dl_fname[QNX4_NAME_MAX]; | ||
66 | __u32 dl_inode_blk; | ||
67 | __u8 dl_inode_ndx; | ||
68 | __u8 dl_spare[10]; | ||
69 | __u8 dl_status; | ||
70 | }; | ||
71 | |||
72 | struct qnx4_xblk { | ||
73 | __u32 xblk_next_xblk; | ||
74 | __u32 xblk_prev_xblk; | ||
75 | __u8 xblk_num_xtnts; | ||
76 | __u8 xblk_spare[3]; | ||
77 | __s32 xblk_num_blocks; | ||
78 | qnx4_xtnt_t xblk_xtnts[QNX4_MAX_XTNTS_PER_XBLK]; | ||
79 | char xblk_signature[8]; | ||
80 | qnx4_xtnt_t xblk_first_xtnt; | ||
81 | }; | ||
82 | |||
83 | struct qnx4_super_block { | ||
84 | struct qnx4_inode_entry RootDir; | ||
85 | struct qnx4_inode_entry Inode; | ||
86 | struct qnx4_inode_entry Boot; | ||
87 | struct qnx4_inode_entry AltBoot; | ||
88 | }; | ||
89 | |||
90 | #ifdef __KERNEL__ | ||
91 | |||
92 | #define QNX4_DEBUG 0 | ||
93 | |||
94 | #if QNX4_DEBUG | ||
95 | #define QNX4DEBUG(X) printk X | ||
96 | #else | ||
97 | #define QNX4DEBUG(X) (void) 0 | ||
98 | #endif | ||
99 | |||
100 | struct qnx4_sb_info { | ||
101 | struct buffer_head *sb_buf; /* superblock buffer */ | ||
102 | struct qnx4_super_block *sb; /* our superblock */ | ||
103 | unsigned int Version; /* may be useful */ | ||
104 | struct qnx4_inode_entry *BitMap; /* useful */ | ||
105 | }; | ||
106 | |||
107 | struct qnx4_inode_info { | ||
108 | struct qnx4_inode_entry raw; | ||
109 | loff_t mmu_private; | ||
110 | struct inode vfs_inode; | ||
111 | }; | ||
112 | |||
113 | extern struct dentry *qnx4_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd); | ||
114 | extern unsigned long qnx4_count_free_blocks(struct super_block *sb); | ||
115 | extern unsigned long qnx4_block_map(struct inode *inode, long iblock); | ||
116 | |||
117 | extern struct buffer_head *qnx4_bread(struct inode *, int, int); | ||
118 | |||
119 | extern struct inode_operations qnx4_file_inode_operations; | ||
120 | extern struct inode_operations qnx4_dir_inode_operations; | ||
121 | extern struct file_operations qnx4_file_operations; | ||
122 | extern struct file_operations qnx4_dir_operations; | ||
123 | extern int qnx4_is_free(struct super_block *sb, long block); | ||
124 | extern int qnx4_set_bitmap(struct super_block *sb, long block, int busy); | ||
125 | extern int qnx4_create(struct inode *inode, struct dentry *dentry, int mode, struct nameidata *nd); | ||
126 | extern void qnx4_truncate(struct inode *inode); | ||
127 | extern void qnx4_free_inode(struct inode *inode); | ||
128 | extern int qnx4_unlink(struct inode *dir, struct dentry *dentry); | ||
129 | extern int qnx4_rmdir(struct inode *dir, struct dentry *dentry); | ||
130 | extern int qnx4_sync_file(struct file *file, struct dentry *dentry, int); | ||
131 | extern int qnx4_sync_inode(struct inode *inode); | ||
132 | |||
133 | static inline struct qnx4_sb_info *qnx4_sb(struct super_block *sb) | ||
134 | { | ||
135 | return sb->s_fs_info; | ||
136 | } | ||
137 | |||
138 | static inline struct qnx4_inode_info *qnx4_i(struct inode *inode) | ||
139 | { | ||
140 | return container_of(inode, struct qnx4_inode_info, vfs_inode); | ||
141 | } | ||
142 | |||
143 | static inline struct qnx4_inode_entry *qnx4_raw_inode(struct inode *inode) | ||
144 | { | ||
145 | return &qnx4_i(inode)->raw; | ||
146 | } | ||
147 | |||
148 | #endif /* __KERNEL__ */ | ||
149 | |||
150 | #endif | ||