1
#ifndef UTIL_LINUX_MINIX_PROGRAMS_H
2
#define UTIL_LINUX_MINIX_PROGRAMS_H
10
extern char *super_block_buffer;
12
#define Super (*(struct minix_super_block *) super_block_buffer)
13
#define Super3 (*(struct minix3_super_block *) super_block_buffer)
15
#define INODE_SIZE (sizeof(struct minix_inode))
16
#define INODE2_SIZE (sizeof(struct minix2_inode))
18
#define BITS_PER_BLOCK (MINIX_BLOCK_SIZE << 3)
20
#define UPPER(size,n) ((size+((n)-1))/(n))
25
static inline unsigned long get_ninodes(void)
29
return Super3.s_ninodes;
31
return (unsigned long)Super.s_ninodes;
35
static inline unsigned long get_nzones(void)
39
return (unsigned long)Super3.s_zones;
41
return (unsigned long)Super.s_zones;
43
return (unsigned long)Super.s_nzones;
47
static inline unsigned long get_nimaps(void)
51
return (unsigned long)Super3.s_imap_blocks;
53
return (unsigned long)Super.s_imap_blocks;
57
static inline unsigned long get_nzmaps(void)
61
return (unsigned long)Super3.s_zmap_blocks;
63
return (unsigned long)Super.s_zmap_blocks;
67
static inline unsigned long get_first_zone(void)
71
return (unsigned long)Super3.s_firstdatazone;
73
return (unsigned long)Super.s_firstdatazone;
77
static inline unsigned long get_zone_size(void)
81
return (unsigned long)Super3.s_log_zone_size;
83
return (unsigned long)Super.s_log_zone_size;
87
static inline unsigned long get_max_size(void)
91
return (unsigned long)Super3.s_max_size;
93
return (unsigned long)Super.s_max_size;
97
static unsigned long inode_blocks(void)
102
return UPPER(get_ninodes(), MINIX2_INODES_PER_BLOCK);
104
return UPPER(get_ninodes(), MINIX_INODES_PER_BLOCK);
108
static inline unsigned long first_zone_data(void)
110
return 2 + get_nimaps() + get_nzmaps() + inode_blocks();
113
static inline unsigned long get_inode_buffer_size(void)
115
return inode_blocks() * MINIX_BLOCK_SIZE;
118
#endif /* UTIL_LINUX_MINIX_PROGRAMS_H */