| #ifndef FDISK_SUN_LABEL_H |
| #define FDISK_SUN_LABEL_H |
| |
| #include <stdint.h> |
| |
| struct sun_partition { |
| uint32_t start_cylinder; |
| uint32_t num_sectors; |
| }; |
| |
| struct sun_tag_flag { |
| uint16_t tag; |
| #define SUN_TAG_UNASSIGNED 0x00 /* Unassigned partition */ |
| #define SUN_TAG_BOOT 0x01 /* Boot partition */ |
| #define SUN_TAG_ROOT 0x02 /* Root filesystem */ |
| #define SUN_TAG_SWAP 0x03 /* Swap partition */ |
| #define SUN_TAG_USR 0x04 /* /usr filesystem */ |
| #define SUN_TAG_BACKUP 0x05 /* Full-disk slice */ |
| #define SUN_TAG_STAND 0x06 /* Stand partition */ |
| #define SUN_TAG_VAR 0x07 /* /var filesystem */ |
| #define SUN_TAG_HOME 0x08 /* /home filesystem */ |
| #define SUN_TAG_ALTSCTR 0x09 /* Alt sector partition */ |
| #define SUN_TAG_CACHE 0x0a /* Cachefs partition */ |
| #define SUN_TAG_RESERVED 0x0b /* SMI reserved data */ |
| #define SUN_TAG_LINUX_SWAP 0x82 /* Linux SWAP */ |
| #define SUN_TAG_LINUX_NATIVE 0x83 /* Linux filesystem */ |
| #define SUN_TAG_LINUX_LVM 0x8e /* Linux LVM */ |
| #define SUN_TAG_LINUX_RAID 0xfd /* LInux RAID */ |
| |
| uint16_t flag; |
| #define SUN_FLAG_UNMNT 0x01 /* Unmountable partition*/ |
| #define SUN_FLAG_RONLY 0x10 /* Read only */ |
| }; |
| |
| #define SUN_LABEL_SIZE 512 |
| |
| #define SUN_LABEL_ID_SIZE 128 |
| #define SUN_VOLUME_ID_SIZE 8 |
| |
| #define SUN_LABEL_VERSION 0x00000001 |
| #define SUN_LABEL_SANE 0x600ddeee |
| #define SUN_NUM_PARTITIONS 8 |
| |
| struct sun_disk_label { |
| char label_id[SUN_LABEL_ID_SIZE]; |
| uint32_t version; |
| char volume_id[SUN_VOLUME_ID_SIZE]; |
| uint16_t num_partitions; |
| struct sun_tag_flag part_tags[SUN_NUM_PARTITIONS]; |
| uint32_t bootinfo[3]; |
| uint32_t sanity; |
| uint32_t resv[10]; |
| uint32_t part_timestamps[SUN_NUM_PARTITIONS]; |
| uint32_t write_reinstruct; |
| uint32_t read_reinstruct; |
| uint8_t pad[148]; |
| uint16_t rpm; |
| uint16_t pcyl; |
| uint16_t apc; |
| uint16_t resv1; |
| uint16_t resv2; |
| uint16_t intrlv; |
| uint16_t ncyl; |
| uint16_t acyl; |
| uint16_t nhead; |
| uint16_t nsect; |
| uint16_t resv3; |
| uint16_t resv4; |
| struct sun_partition partitions[SUN_NUM_PARTITIONS]; |
| uint16_t magic; |
| uint16_t cksum; |
| }; |
| |
| #define SUN_LABEL_MAGIC 0xDABE |
| #define SUN_LABEL_MAGIC_SWAPPED 0xBEDA |
| #define sunlabel ((struct sun_disk_label *)MBRbuffer) |
| |
| /* fdisksunlabel.c */ |
| extern struct systypes sun_sys_types[]; |
| extern void guess_device_type(int fd); |
| extern int check_sun_label(void); |
| extern void sun_nolabel(void); |
| extern void create_sunlabel(void); |
| extern void sun_delete_partition(int i); |
| extern int sun_change_sysid(int i, uint16_t sys); |
| extern void sun_list_table(int xtra); |
| extern void verify_sun(void); |
| extern void add_sun_partition(int n, int sys); |
| extern void sun_write_table(void); |
| extern void sun_set_alt_cyl(void); |
| extern void sun_set_ncyl(int cyl); |
| extern void sun_set_xcyl(void); |
| extern void sun_set_ilfact(void); |
| extern void sun_set_rspeed(void); |
| extern void sun_set_pcylcount(void); |
| extern void toggle_sunflags(int i, uint16_t mask); |
| extern int sun_get_sysid(int i); |
| |
| #endif /* FDISK_SUN_LABEL_H */ |