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