]>
git.ipfire.org Git - thirdparty/util-linux.git/blob - include/pt-sun.h
2 * No copyright is claimed. This code is in the public domain; do with
5 #ifndef UTIL_LINUX_PT_SUN_H
6 #define UTIL_LINUX_PT_SUN_H
10 #define SUN_LABEL_MAGIC 0xDABE
12 /* Supported VTOC setting */
13 #define SUN_VTOC_SANITY 0x600DDEEE /* magic number */
14 #define SUN_VTOC_VERSION 1
15 #define SUN_MAXPARTITIONS 8
17 struct sun_disklabel
{
18 unsigned char label_id
[128]; /* Informative text string */
21 uint32_t version
; /* version */
22 char volume_id
[8];/* volume name */
23 uint16_t nparts
; /* num of partitions */
25 struct sun_info
{ /* partition information */
26 uint16_t id
; /* SUN_TAG_* */
27 uint16_t flags
; /* SUN_FLAG_* */
28 } __attribute__ ((packed
)) infos
[8];
30 uint16_t padding
; /* padding */
31 uint32_t bootinfo
[3]; /* info needed by mboot */
32 uint32_t sanity
; /* magic number */
33 uint32_t reserved
[10]; /* padding */
34 uint32_t timestamp
[8]; /* partition timestamp */
35 } __attribute__ ((packed
)) vtoc
;
37 uint32_t write_reinstruct
; /* sectors to skip, writes */
38 uint32_t read_reinstruct
; /* sectors to skip, reads */
39 unsigned char spare
[148]; /* padding */
40 uint16_t rpm
; /* disk rotational speed */
41 uint16_t pcyl
; /* physical cylinder count */
42 uint16_t apc
; /* extra sects per cylinder */
45 uint16_t intrlv
; /* interleave factor */
46 uint16_t ncyl
; /* data cylinder count */
47 uint16_t acyl
; /* alt. cylinder count */
48 uint16_t nhead
; /* tracks per cylinder <---- */
49 uint16_t nsect
; /* sectors per track <---- */
53 struct sun_partition
{ /* partitions */
54 uint32_t start_cylinder
;
56 } __attribute__ ((packed
)) partitions
[8];
58 uint16_t magic
; /* magic number */
59 uint16_t csum
; /* label xor'd checksum */
60 } __attribute__ ((packed
));
63 #define SUN_TAG_UNASSIGNED 0x00 /* Unassigned partition */
64 #define SUN_TAG_BOOT 0x01 /* Boot partition */
65 #define SUN_TAG_ROOT 0x02 /* Root filesystem */
66 #define SUN_TAG_SWAP 0x03 /* Swap partition */
67 #define SUN_TAG_USR 0x04 /* /usr filesystem */
68 #define SUN_TAG_WHOLEDISK 0x05 /* Full-disk slice */
69 #define SUN_TAG_STAND 0x06 /* Stand partition */
70 #define SUN_TAG_VAR 0x07 /* /var filesystem */
71 #define SUN_TAG_HOME 0x08 /* /home filesystem */
72 #define SUN_TAG_ALTSCTR 0x09 /* Alt sector partition */
73 #define SUN_TAG_CACHE 0x0a /* Cachefs partition */
74 #define SUN_TAG_RESERVED 0x0b /* SMI reserved data */
75 #define SUN_TAG_LINUX_SWAP 0x82 /* Linux SWAP */
76 #define SUN_TAG_LINUX_NATIVE 0x83 /* Linux filesystem */
77 #define SUN_TAG_LINUX_LVM 0x8e /* Linux LVM */
78 #define SUN_TAG_LINUX_RAID 0xfd /* LInux RAID */
80 #define SUN_FLAG_UNMNT 0x01 /* Unmountable partition*/
81 #define SUN_FLAG_RONLY 0x10 /* Read only */
83 static inline uint16_t sun_pt_checksum(const struct sun_disklabel
*label
)
85 const uint16_t *ptr
= ((const uint16_t *) (label
+ 1)) - 1;
88 for (sum
= 0; ptr
>= ((const uint16_t *) label
);)
94 #endif /* UTIL_LINUX_PT_SUN_H */