diff options
author | Karel Zak | 2013-02-04 17:46:30 +0100 |
---|---|---|
committer | Karel Zak | 2013-03-11 13:00:55 +0100 |
commit | a08dc0ca895e6a46c33ace6a021fbb76a60a0e4e (patch) | |
tree | d136c50456f77e66238f70cd0329789edc65a0b4 /libblkid | |
parent | fdisk: (sun) use cpu_to_be* macros, remove other_endian global variable (diff) | |
download | kernel-qcow2-util-linux-a08dc0ca895e6a46c33ace6a021fbb76a60a0e4e.tar.gz kernel-qcow2-util-linux-a08dc0ca895e6a46c33ace6a021fbb76a60a0e4e.tar.xz kernel-qcow2-util-linux-a08dc0ca895e6a46c33ace6a021fbb76a60a0e4e.zip |
libblkid: move sun PT definition to include/
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libblkid')
-rw-r--r-- | libblkid/src/partitions/sun.c | 69 |
1 files changed, 2 insertions, 67 deletions
diff --git a/libblkid/src/partitions/sun.c b/libblkid/src/partitions/sun.c index f151f46ae..f1b839258 100644 --- a/libblkid/src/partitions/sun.c +++ b/libblkid/src/partitions/sun.c @@ -12,74 +12,9 @@ #include <stdint.h> #include <stddef.h> +#include "pt-sun.h" #include "partitions.h" -/* Supported VTOC setting */ -#define SUN_VTOC_SANITY 0x600DDEEE /* magic number */ -#define SUN_VTOC_VERSION 1 - -#define SUN_MAXPARTITIONS 8 - -/* Partition IDs */ -#define SUN_TAG_WHOLEDISK 0x05 - -struct sun_disklabel { - unsigned char info[128]; /* Informative text string */ - - struct sun_vtoc { - uint32_t version; /* version */ - char volume[8]; /* volume name */ - uint16_t nparts; /* num of partitions */ - - struct sun_info { /* partition information */ - uint16_t id; /* tag */ - uint16_t flags; - } __attribute__ ((packed)) infos[8]; - - uint16_t padding; /* padding */ - uint32_t bootinfo[3]; /* info needed by mboot */ - uint32_t sanity; /* magic number */ - uint32_t reserved[10]; /* padding */ - uint32_t timestamp[8]; /* partition timestamp */ - } __attribute__ ((packed)) vtoc; - - uint32_t write_reinstruct; /* sectors to skip, writes */ - uint32_t read_reinstruct; /* sectors to skip, reads */ - unsigned char spare[148]; /* padding */ - uint16_t rspeed; /* disk rotational speed */ - uint16_t pcylcount; /* physical cylinder count */ - uint16_t sparecyl; /* extra sects per cylinder */ - uint16_t obs1; - uint16_t obs2; - uint16_t ilfact; /* interleave factor */ - uint16_t ncyl; /* data cylinder count */ - uint16_t nacyl; /* alt. cylinder count */ - uint16_t ntrks; /* tracks per cylinder <---- */ - uint16_t nsect; /* sectors per track <---- */ - uint16_t obs3; - uint16_t obs4; - - struct sun_partition { /* partitions */ - uint32_t start_cylinder; - uint32_t num_sectors; - } __attribute__ ((packed)) partitions[8]; - - uint16_t magic; /* magic number */ - uint16_t csum; /* label xor'd checksum */ -} __attribute__ ((packed)); - - -uint16_t count_checksum(struct sun_disklabel *label) -{ - uint16_t *ptr = ((uint16_t *) (label + 1)) - 1; - uint16_t sum; - - for (sum = 0; ptr >= ((uint16_t *) label);) - sum ^= *ptr--; - - return sum; -} - static int probe_sun_pt(blkid_probe pr, const struct blkid_idmag *mag __attribute__((__unused__))) { @@ -95,7 +30,7 @@ static int probe_sun_pt(blkid_probe pr, if (!l) goto nothing; - if (count_checksum(l)) { + if (sun_pt_checksum(l)) { DBG(DEBUG_LOWPROBE, printf( "detected corrupted sun disk label -- ignore\n")); goto nothing; |