1 #ifndef UTIL_LINUX_MINIX_H
2 #define UTIL_LINUX_MINIX_H
3 
4 #include <stdint.h>
5 
6 struct minix_inode {
7 	uint16_t i_mode;
8 	uint16_t i_uid;
9 	uint32_t i_size;
10 	uint32_t i_time;
11 	uint8_t  i_gid;
12 	uint8_t  i_nlinks;
13 	uint16_t i_zone[9];
14 };
15 
16 struct minix2_inode {
17 	uint16_t i_mode;
18 	uint16_t i_nlinks;
19 	uint16_t i_uid;
20 	uint16_t i_gid;
21 	uint32_t i_size;
22 	uint32_t i_atime;
23 	uint32_t i_mtime;
24 	uint32_t i_ctime;
25 	uint32_t i_zone[10];
26 };
27 
28 struct minix_super_block {
29 	uint16_t s_ninodes;
30 	uint16_t s_nzones;
31 	uint16_t s_imap_blocks;
32 	uint16_t s_zmap_blocks;
33 	uint16_t s_firstdatazone;
34 	uint16_t s_log_zone_size;
35 	uint32_t s_max_size;
36 	uint16_t s_magic;
37 	uint16_t s_state;
38 	uint32_t s_zones;
39 };
40 
41 /* V3 minix super-block data on disk */
42 struct minix3_super_block {
43 	uint32_t s_ninodes;
44 	uint16_t s_pad0;
45 	uint16_t s_imap_blocks;
46 	uint16_t s_zmap_blocks;
47 	uint16_t s_firstdatazone;
48 	uint16_t s_log_zone_size;
49 	uint16_t s_pad1;
50 	uint32_t s_max_size;
51 	uint32_t s_zones;
52 	uint16_t s_magic;
53 	uint16_t s_pad2;
54 	uint16_t s_blocksize;
55 	uint8_t  s_disk_version;
56 };
57 
58 /*
59  * Minix subpartitions are always within primary dos partition.
60  */
61 #define MINIX_MAXPARTITIONS  4
62 
63 #define MINIX_BLOCK_SIZE_BITS 10
64 #define MINIX_BLOCK_SIZE     (1 << MINIX_BLOCK_SIZE_BITS)
65 
66 #define MINIX_NAME_MAX       255             /* # chars in a file name */
67 #define MINIX_MAX_INODES     65535
68 
69 #define MINIX_INODES_PER_BLOCK ((MINIX_BLOCK_SIZE)/(sizeof (struct minix_inode)))
70 #define MINIX2_INODES_PER_BLOCK ((MINIX_BLOCK_SIZE)/(sizeof (struct minix2_inode)))
71 
72 /* minix_super_block.s_state */
73 #define MINIX_VALID_FS       0x0001          /* Clean fs. */
74 #define MINIX_ERROR_FS       0x0002          /* fs has errors. */
75 
76 
77 #define MINIX_SUPER_MAGIC    0x137F          /* minix V1 fs, 14 char names */
78 #define MINIX_SUPER_MAGIC2   0x138F          /* minix V1 fs, 30 char names */
79 
80 #define MINIX2_SUPER_MAGIC   0x2468	     /* minix V2 fs, 14 char names */
81 #define MINIX2_SUPER_MAGIC2  0x2478	     /* minix V2 fs, 30 char names */
82 
83 #define MINIX3_SUPER_MAGIC   0x4d5a          /* minix V3 fs (60 char names) */
84 
85 #endif /* UTIL_LINUX_MINIX_H */
86