100 lines
2.9 KiB
C
100 lines
2.9 KiB
C
#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 */
|