summaryrefslogtreecommitdiffstats
path: root/include/minix.h
blob: f28991ce9a18149844dcb4f936cbbb4057e4a4bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#ifndef UTIL_LINUX_MINIX_H
#define UTIL_LINUX_MINIX_H

#include <stdint.h>

struct minix_inode {
	uint16_t i_mode;
	uint16_t i_uid;
	uint32_t i_size;
	uint32_t i_time;
	uint8_t  i_gid;
	uint8_t  i_nlinks;
	uint16_t i_zone[9];
};

struct minix2_inode {
	uint16_t i_mode;
	uint16_t i_nlinks;
	uint16_t i_uid;
	uint16_t i_gid;
	uint32_t i_size;
	uint32_t i_atime;
	uint32_t i_mtime;
	uint32_t i_ctime;
	uint32_t i_zone[10];
};

struct minix_super_block {
	uint16_t s_ninodes;
	uint16_t s_nzones;
	uint16_t s_imap_blocks;
	uint16_t s_zmap_blocks;
	uint16_t s_firstdatazone;
	uint16_t s_log_zone_size;
	uint32_t s_max_size;
	uint16_t s_magic;
	uint16_t s_state;
	uint32_t s_zones;
};

/* V3 minix super-block data on disk */
struct minix3_super_block {
	uint32_t s_ninodes;
	uint16_t s_pad0;
	uint16_t s_imap_blocks;
	uint16_t s_zmap_blocks;
	uint16_t s_firstdatazone;
	uint16_t s_log_zone_size;
	uint16_t s_pad1;
	uint32_t s_max_size;
	uint32_t s_zones;
	uint16_t s_magic;
	uint16_t s_pad2;
	uint16_t s_blocksize;
	uint8_t  s_disk_version;
};

/*
 * Minix subpartitions are always within primary dos partition.
 */
#define MINIX_MAXPARTITIONS  4

#define MINIX_BLOCK_SIZE_BITS 10
#define MINIX_BLOCK_SIZE     (1 << MINIX_BLOCK_SIZE_BITS)

#define MINIX_NAME_MAX       255             /* # chars in a file name */
#define MINIX_MAX_INODES     65535

#define MINIX_INODES_PER_BLOCK ((MINIX_BLOCK_SIZE)/(sizeof (struct minix_inode)))
#define MINIX2_INODES_PER_BLOCK ((MINIX_BLOCK_SIZE)/(sizeof (struct minix2_inode)))

/* minix_super_block.s_state */
#define MINIX_VALID_FS       0x0001          /* Clean fs. */
#define MINIX_ERROR_FS       0x0002          /* fs has errors. */


#define MINIX_SUPER_MAGIC    0x137F          /* minix V1 fs, 14 char names */
#define MINIX_SUPER_MAGIC2   0x138F          /* minix V1 fs, 30 char names */

#define MINIX2_SUPER_MAGIC   0x2468	     /* minix V2 fs, 14 char names */
#define MINIX2_SUPER_MAGIC2  0x2478	     /* minix V2 fs, 30 char names */

#define MINIX3_SUPER_MAGIC   0x4d5a          /* minix V3 fs (60 char names) */

#endif /* UTIL_LINUX_MINIX_H */