]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: move bsd definitions to pt-bsd.h
authorKarel Zak <kzak@redhat.com>
Wed, 26 Jun 2013 09:32:06 +0000 (11:32 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 16 Sep 2013 14:47:04 +0000 (16:47 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
include/Makemodule.am
include/pt-bsd.h [new file with mode: 0644]
libblkid/src/partitions/bsd.c

index 73f0a7d43c151213ad0362049a750ec54e9e8256..9ed3569511b35678fa6ea7a67f6a31256713cc7d 100644 (file)
@@ -49,6 +49,7 @@ dist_noinst_HEADERS += \
        include/xalloc.h \
        include/xgetpass.h \
        include/pt-sgi.h \
+       include/pt-bsd.h \
        include/pt-mbr.h \
        include/pt-mbr-partnames.h \
        include/pt-sun.h
diff --git a/include/pt-bsd.h b/include/pt-bsd.h
new file mode 100644 (file)
index 0000000..0459536
--- /dev/null
@@ -0,0 +1,159 @@
+#ifndef UTIL_LINUX_PT_BSD_H
+#define UTIL_LINUX_PT_BSD_H
+
+#define BSD_MAXPARTITIONS      16
+#define BSD_FS_UNUSED          0
+
+#ifndef BSD_DISKMAGIC
+# define BSD_DISKMAGIC     ((uint32_t) 0x82564557)
+#endif
+
+#define BSD_LINUX_BOOTDIR "/usr/ucb/mdec"
+
+#if defined (__alpha__) || defined (__powerpc__) || \
+    defined (__ia64__) || defined (__hppa__)
+# define BSD_LABELSECTOR   0
+# define BSD_LABELOFFSET   64
+#elif defined(__sparc64__)
+# define BSD_LABELSECTOR   0
+# define BSD_LABELOFFSET   128
+#else
+# define BSD_LABELSECTOR   1
+# define BSD_LABELOFFSET   0
+#endif
+
+#define        BSD_BBSIZE        8192          /* size of boot area, with label */
+#define        BSD_SBSIZE        8192          /* max size of fs superblock */
+
+struct bsd_disklabel {
+       uint32_t        d_magic;                /* the magic number */
+       int16_t         d_type;                 /* drive type */
+       int16_t         d_subtype;              /* controller/d_type specific */
+       char            d_typename[16];         /* type name, e.g. "eagle" */
+       char            d_packname[16];         /* pack identifier */
+
+                       /* disk geometry: */
+       uint32_t        d_secsize;              /* # of bytes per sector */
+       uint32_t        d_nsectors;             /* # of data sectors per track */
+       uint32_t        d_ntracks;              /* # of tracks per cylinder */
+       uint32_t        d_ncylinders;           /* # of data cylinders per unit */
+       uint32_t        d_secpercyl;            /* # of data sectors per cylinder */
+       uint32_t        d_secperunit;           /* # of data sectors per unit */
+
+       /*
+        * Spares (bad sector replacements) below
+        * are not counted in d_nsectors or d_secpercyl.
+        * Spare sectors are assumed to be physical sectors
+        * which occupy space at the end of each track and/or cylinder.
+        */
+       uint16_t        d_sparespertrack;       /* # of spare sectors per track */
+       uint16_t        d_sparespercyl;         /* # of spare sectors per cylinder */
+
+       /*
+        * Alternate cylinders include maintenance, replacement,
+        * configuration description areas, etc.
+        */
+       uint32_t        d_acylinders;           /* # of alt. cylinders per unit */
+
+                       /* hardware characteristics: */
+       /*
+        * d_interleave, d_trackskew and d_cylskew describe perturbations
+        * in the media format used to compensate for a slow controller.
+        * Interleave is physical sector interleave, set up by the formatter
+        * or controller when formatting.  When interleaving is in use,
+        * logically adjacent sectors are not physically contiguous,
+        * but instead are separated by some number of sectors.
+        * It is specified as the ratio of physical sectors traversed
+        * per logical sector.  Thus an interleave of 1:1 implies contiguous
+        * layout, while 2:1 implies that logical sector 0 is separated
+        * by one sector from logical sector 1.
+        * d_trackskew is the offset of sector 0 on track N
+        * relative to sector 0 on track N-1 on the same cylinder.
+        * Finally, d_cylskew is the offset of sector 0 on cylinder N
+        * relative to sector 0 on cylinder N-1.
+        */
+       uint16_t        d_rpm;                  /* rotational speed */
+       uint16_t        d_interleave;           /* hardware sector interleave */
+       uint16_t        d_trackskew;            /* sector 0 skew, per track */
+       uint16_t        d_cylskew;              /* sector 0 skew, per cylinder */
+       uint32_t        d_headswitch;           /* head switch time, usec */
+       uint32_t        d_trkseek;              /* track-to-track seek, usec */
+       uint32_t        d_flags;                /* generic flags */
+       uint32_t        d_drivedata[5];         /* drive-type specific information */
+       uint32_t        d_spare[5];             /* reserved for future use */
+       uint32_t        d_magic2;               /* the magic number (again) */
+       uint16_t        d_checksum;             /* xor of data incl. partitions */
+
+                       /* filesystem and partition information: */
+       uint16_t        d_npartitions;          /* number of partitions in following */
+       uint32_t        d_bbsize;               /* size of boot area at sn0, bytes */
+       uint32_t        d_sbsize;               /* max size of fs superblock, bytes */
+
+       struct bsd_partition     {              /* the partition table */
+               uint32_t        p_size;         /* number of sectors in partition */
+               uint32_t        p_offset;       /* starting sector */
+               uint32_t        p_fsize;        /* filesystem basic fragment size */
+               uint8_t         p_fstype;       /* filesystem type, see below */
+               uint8_t         p_frag;         /* filesystem fragments per block */
+               uint16_t        p_cpg;          /* filesystem cylinders per group */
+       } __attribute__((packed)) d_partitions[BSD_MAXPARTITIONS];      /* actually may be more */
+} __attribute__((packed));
+
+
+/* d_type values: */
+#define        BSD_DTYPE_SMD           1               /* SMD, XSMD; VAX hp/up */
+#define        BSD_DTYPE_MSCP          2               /* MSCP */
+#define        BSD_DTYPE_DEC           3               /* other DEC (rk, rl) */
+#define        BSD_DTYPE_SCSI          4               /* SCSI */
+#define        BSD_DTYPE_ESDI          5               /* ESDI interface */
+#define        BSD_DTYPE_ST506         6               /* ST506 etc. */
+#define        BSD_DTYPE_HPIB          7               /* CS/80 on HP-IB */
+#define BSD_DTYPE_HPFL         8               /* HP Fiber-link */
+#define        BSD_DTYPE_FLOPPY        10              /* floppy */
+
+/* d_subtype values: */
+#define BSD_DSTYPE_INDOSPART   0x8             /* is inside dos partition */
+#define BSD_DSTYPE_DOSPART(s)  ((s) & 3)       /* dos partition number */
+#define BSD_DSTYPE_GEOMETRY    0x10            /* drive params in label */
+
+/*
+ * Filesystem type and version.
+ * Used to interpret other filesystem-specific
+ * per-partition information.
+ */
+#define        BSD_FS_UNUSED   0               /* unused */
+#define        BSD_FS_SWAP     1               /* swap */
+#define        BSD_FS_V6       2               /* Sixth Edition */
+#define        BSD_FS_V7       3               /* Seventh Edition */
+#define        BSD_FS_SYSV     4               /* System V */
+#define        BSD_FS_V71K     5               /* V7 with 1K blocks (4.1, 2.9) */
+#define        BSD_FS_V8       6               /* Eighth Edition, 4K blocks */
+#define        BSD_FS_BSDFFS   7               /* 4.2BSD fast file system */
+#define        BSD_FS_BSDLFS   9               /* 4.4BSD log-structured file system */
+#define        BSD_FS_OTHER    10              /* in use, but unknown/unsupported */
+#define        BSD_FS_HPFS     11              /* OS/2 high-performance file system */
+#define        BSD_FS_ISO9660  12              /* ISO-9660 filesystem (cdrom) */
+#define BSD_FS_ISOFS   BSD_FS_ISO9660
+#define        BSD_FS_BOOT     13              /* partition contains bootstrap */
+#define BSD_FS_ADOS    14              /* AmigaDOS fast file system */
+#define BSD_FS_HFS     15              /* Macintosh HFS */
+#define BSD_FS_ADVFS   16              /* Digital Unix AdvFS */
+
+/* this is annoying, but it's also the way it is :-( */
+#ifdef __alpha__
+#define        BSD_FS_EXT2     8               /* ext2 file system */
+#else
+#define        BSD_FS_MSDOS    8               /* MS-DOS file system */
+#endif
+
+/*
+ * flags shared by various drives:
+ */
+#define        BSD_D_REMOVABLE 0x01            /* removable media */
+#define        BSD_D_ECC       0x02            /* supports ECC */
+#define        BSD_D_BADSECT   0x04            /* supports bad sector forw. */
+#define        BSD_D_RAMDISK   0x08            /* disk emulator */
+#define        BSD_D_CHAIN     0x10            /* can do back-back transfers */
+#define        BSD_D_DOSPART   0x20            /* within MSDOS partition */
+
+#endif /* UTIL_LINUX_PT_BSD_H */
index 71a591c6c345aa4c28944f92ba31e88ae4b320d0..c8190b2322845c79df932bb4bf37009a6c7fa8d6 100644 (file)
 #include <stdint.h>
 
 #include "partitions.h"
-
-#define BSD_MAXPARTITIONS      16
-#define BSD_FS_UNUSED          0
-
-struct bsd_disklabel {
-       uint32_t        d_magic;                /* the magic number */
-       int16_t         d_type;                 /* drive type */
-       int16_t         d_subtype;              /* controller/d_type specific */
-       char            d_typename[16];         /* type name, e.g. "eagle" */
-       char            d_packname[16];         /* pack identifier */
-
-                       /* disk geometry: */
-       uint32_t        d_secsize;              /* # of bytes per sector */
-       uint32_t        d_nsectors;             /* # of data sectors per track */
-       uint32_t        d_ntracks;              /* # of tracks per cylinder */
-       uint32_t        d_ncylinders;           /* # of data cylinders per unit */
-       uint32_t        d_secpercyl;            /* # of data sectors per cylinder */
-       uint32_t        d_secperunit;           /* # of data sectors per unit */
-
-       /*
-        * Spares (bad sector replacements) below
-        * are not counted in d_nsectors or d_secpercyl.
-        * Spare sectors are assumed to be physical sectors
-        * which occupy space at the end of each track and/or cylinder.
-        */
-       uint16_t        d_sparespertrack;       /* # of spare sectors per track */
-       uint16_t        d_sparespercyl;         /* # of spare sectors per cylinder */
-
-       /*
-        * Alternate cylinders include maintenance, replacement,
-        * configuration description areas, etc.
-        */
-       uint32_t        d_acylinders;           /* # of alt. cylinders per unit */
-
-                       /* hardware characteristics: */
-       /*
-        * d_interleave, d_trackskew and d_cylskew describe perturbations
-        * in the media format used to compensate for a slow controller.
-        * Interleave is physical sector interleave, set up by the formatter
-        * or controller when formatting.  When interleaving is in use,
-        * logically adjacent sectors are not physically contiguous,
-        * but instead are separated by some number of sectors.
-        * It is specified as the ratio of physical sectors traversed
-        * per logical sector.  Thus an interleave of 1:1 implies contiguous
-        * layout, while 2:1 implies that logical sector 0 is separated
-        * by one sector from logical sector 1.
-        * d_trackskew is the offset of sector 0 on track N
-        * relative to sector 0 on track N-1 on the same cylinder.
-        * Finally, d_cylskew is the offset of sector 0 on cylinder N
-        * relative to sector 0 on cylinder N-1.
-        */
-       uint16_t        d_rpm;                  /* rotational speed */
-       uint16_t        d_interleave;           /* hardware sector interleave */
-       uint16_t        d_trackskew;            /* sector 0 skew, per track */
-       uint16_t        d_cylskew;              /* sector 0 skew, per cylinder */
-       uint32_t        d_headswitch;           /* head switch time, usec */
-       uint32_t        d_trkseek;              /* track-to-track seek, usec */
-       uint32_t        d_flags;                /* generic flags */
-       uint32_t        d_drivedata[5];         /* drive-type specific information */
-       uint32_t        d_spare[5];             /* reserved for future use */
-       uint32_t        d_magic2;               /* the magic number (again) */
-       uint16_t        d_checksum;             /* xor of data incl. partitions */
-
-                       /* filesystem and partition information: */
-       uint16_t        d_npartitions;          /* number of partitions in following */
-       uint32_t        d_bbsize;               /* size of boot area at sn0, bytes */
-       uint32_t        d_sbsize;               /* max size of fs superblock, bytes */
-
-       struct bsd_partition     {              /* the partition table */
-               uint32_t        p_size;         /* number of sectors in partition */
-               uint32_t        p_offset;       /* starting sector */
-               uint32_t        p_fsize;        /* filesystem basic fragment size */
-               uint8_t         p_fstype;       /* filesystem type, see below */
-               uint8_t         p_frag;         /* filesystem fragments per block */
-               uint16_t        p_cpg;          /* filesystem cylinders per group */
-       } __attribute__((packed)) d_partitions[BSD_MAXPARTITIONS];      /* actually may be more */
-} __attribute__((packed));
-
+#include "pt-bsd.h"
 
 /* Returns 'blkid_idmag' in 512-sectors */
 #define BLKID_MAG_SECTOR(_mag)  (((_mag)->kboff * 2)  + ((_mag)->sboff >> 9))