#ifndef FDISK_SUN_LABEL_H #define FDISK_SUN_LABEL_H #include 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 */