Upload Tizen:Base source
[framework/base/util-linux-ng.git] / fdisk / fdisk.h
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
35 struct 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
48 enum failure {usage, usage2, ioctl_error,
49         unable_to_open, unable_to_read, unable_to_seek,
50         unable_to_write, out_of_memory};
51
52 enum action {fdisk, require, try_only, create_empty_dos, create_empty_sun};
53
54 struct geom {
55         unsigned int heads;
56         unsigned int sectors;
57         unsigned int cylinders;
58 };
59
60 /* prototypes for fdisk.c */
61 extern char *disk_device, *line_ptr;
62 extern int fd, partitions;
63 extern unsigned int display_in_cyl_units, units_per_sector;
64 extern void change_units(void);
65 extern void fatal(enum failure why);
66 extern void get_geometry(int fd, struct geom *);
67 extern int get_boot(enum action what);
68 extern int  get_partition(int warn, int max);
69 extern void list_types(struct systypes *sys);
70 extern int read_line (void);
71 extern char read_char(char *mesg);
72 extern int read_hex(struct systypes *sys);
73 extern void reread_partition_table(int leave);
74 extern struct partition *get_part_table(int);
75 extern int valid_part_table_flag(unsigned char *b);
76 extern unsigned int read_int(unsigned int low, unsigned int dflt,
77                              unsigned int high, unsigned int base, char *mesg);
78
79 extern unsigned char MBRbuffer[MAX_SECTOR_SIZE];
80 extern unsigned int heads, cylinders, sector_size;
81 extern unsigned long long sectors;
82 extern char *partition_type(unsigned char type);
83 extern void update_units(void);
84 extern char read_chars(char *mesg);
85 extern void set_changed(int);
86 extern void set_all_unchanged(void);
87
88 #define PLURAL  0
89 #define SINGULAR 1
90 extern const char * str_units(int);
91
92 extern unsigned long long get_start_sect(struct partition *p);
93 extern unsigned long long get_nr_sects(struct partition *p);
94
95 extern int osf_label;
96 extern int sun_label;
97 extern int sgi_label;
98 extern int aix_label;
99 extern int mac_label;
100
101 /* prototypes for fdiskbsdlabel.c */
102 extern void bselect(void);
103 extern int check_osf_label(void);
104 extern int btrydev(char * dev);
105 extern void xbsd_print_disklabel(int);
106
107 /* prototypes for fdisksgilabel.c */
108 extern int valid_part_table_flag(unsigned char *b);
109
110 #define PROC_PARTITIONS "/proc/partitions"