1/*
2   fdisk.h
3*/
4
5#define DEFAULT_SECTOR_SIZE	512
6#define MAX_SECTOR_SIZE	2048
7#define SECTOR_SIZE	512	/* still used in BSD code */
8#define MAXIMUM_PARTS	60
9
10#define ACTIVE_FLAG     0x80
11
12#define EXTENDED        0x05
13#define WIN98_EXTENDED  0x0f
14#define LINUX_PARTITION 0x81
15#define LINUX_SWAP      0x82
16#define LINUX_NATIVE    0x83
17#define LINUX_EXTENDED  0x85
18#define LINUX_LVM       0x8e
19#define LINUX_RAID      0xfd
20
21#define IS_EXTENDED(i) \
22	((i) == EXTENDED || (i) == WIN98_EXTENDED || (i) == LINUX_EXTENDED)
23
24#define SIZE(a)	(sizeof(a)/sizeof((a)[0]))
25
26#define cround(n)	(display_in_cyl_units ? ((n)/units_per_sector)+1 : (n))
27#define scround(x)	(((x)+units_per_sector-1)/units_per_sector)
28
29#if defined(__GNUC__) && (defined(__arm__) || defined(__alpha__))
30# define PACKED __attribute__ ((packed))
31#else
32# define PACKED
33#endif
34
35struct partition {
36	unsigned char boot_ind;         /* 0x80 - active */
37	unsigned char head;             /* starting head */
38	unsigned char sector;           /* starting sector */
39	unsigned char cyl;              /* starting cylinder */
40	unsigned char sys_ind;          /* What partition type */
41	unsigned char end_head;         /* end head */
42	unsigned char end_sector;       /* end sector */
43	unsigned char end_cyl;          /* end cylinder */
44	unsigned char start4[4];        /* starting sector counting from 0 */
45	unsigned char size4[4];         /* nr of sectors in partition */
46} PACKED;
47
48enum failure {usage, usage2, ioctl_error,
49	unable_to_open, unable_to_read, unable_to_seek,
50	unable_to_write, out_of_memory};
51
52enum action {fdisk, require, try_only, create_empty_dos, create_empty_sun};
53
54struct geom {
55	unsigned int heads;
56	unsigned int sectors;
57	unsigned int cylinders;
58};
59
60/* prototypes for fdisk.c */
61extern char *disk_device, *line_ptr;
62extern int fd, partitions;
63extern unsigned int display_in_cyl_units, units_per_sector;
64extern void change_units(void);
65extern void fatal(enum failure why);
66extern void get_geometry(int fd, struct geom *);
67extern int get_boot(enum action what);
68extern int  get_partition(int warn, int max);
69extern void list_types(struct systypes *sys);
70extern int read_line (void);
71extern char read_char(char *mesg);
72extern int read_hex(struct systypes *sys);
73extern void reread_partition_table(int leave);
74extern struct partition *get_part_table(int);
75extern int valid_part_table_flag(unsigned char *b);
76extern unsigned int read_int(unsigned int low, unsigned int dflt,
77			     unsigned int high, unsigned int base, char *mesg);
78
79
80#define PLURAL	0
81#define SINGULAR 1
82extern char *const str_units(int);
83
84extern unsigned int get_start_sect(struct partition *p);
85extern unsigned int get_nr_sects(struct partition *p);
86
87extern int osf_label;
88
89/* prototypes for fdiskbsdlabel.c */
90extern void bselect(void);
91extern int check_osf_label(void);
92extern int btrydev(char * dev);
93extern void xbsd_print_disklabel(int);
94
95/* prototypes for fdisksgilabel.c */
96extern int valid_part_table_flag(unsigned char *b);
97
98#define PROC_PARTITIONS "/proc/partitions"
99