1 /*        $NetBSD: disklabel.h,v 1.6 2015/09/26 03:31:52 christos Exp $ */
2 
3 /*
4  * Copyright (c) 1992, 1993
5  *        The Regents of the University of California.  All rights reserved.
6  *
7  * This software was developed by the Computer Systems Engineering group
8  * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
9  * contributed to Berkeley.
10  *
11  * All advertising materials mentioning features or use of this software
12  * must display the following acknowledgement:
13  *        This product includes software developed by the University of
14  *        California, Lawrence Berkeley Laboratory.
15  *
16  * Redistribution and use in source and binary forms, with or without
17  * modification, are permitted provided that the following conditions
18  * are met:
19  * 1. Redistributions of source code must retain the above copyright
20  *    notice, this list of conditions and the following disclaimer.
21  * 2. Redistributions in binary form must reproduce the above copyright
22  *    notice, this list of conditions and the following disclaimer in the
23  *    documentation and/or other materials provided with the distribution.
24  * 3. Neither the name of the University nor the names of its contributors
25  *    may be used to endorse or promote products derived from this software
26  *    without specific prior written permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
29  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
30  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
31  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
32  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
34  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
36  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
37  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
38  * SUCH DAMAGE.
39  *
40  *        @(#)sun_disklabel.h 8.1 (Berkeley) 6/11/93
41  */
42 
43 /*
44  * SunOS disk label layout (only relevant portions discovered here).
45  */
46 
47 #include <sys/ioccom.h>
48 
49 #define   SUN_DKMAGIC         55998
50 
51 /* These are the guys that Sun's dkinfo needs... */
52 #define SUN_DKIOCGGEOM        _IOR('d', 2, struct sun_dkgeom)         /* geometry info */
53 #define SUN_DKIOCINFO         _IOR('d', 8, struct sun_dkctlr)         /* controller info */
54 #define SUN_DKIOCGPART        _IOR('d', 4, struct sun_dkpart)         /* partition info */
55 
56 /* geometry info */
57 struct sun_dkgeom {
58           u_short   sdkc_ncylinders;    /* data cylinders */
59           u_short   sdkc_acylinders;    /* alternate cylinders */
60           u_short   sdkc_xxx1;
61           u_short   sdkc_ntracks;                 /* tracks per cylinder */
62           u_short   sdkc_xxx2;
63           u_short   sdkc_nsectors;                /* sectors per track */
64           u_short   sdkc_interleave;    /* interleave factor */
65           u_short   sdkc_xxx3;
66           u_short   sdkc_xxx4;
67           u_short   sdkc_sparespercyl;  /* spare sectors per cylinder */
68           u_short   sdkc_rpm;           /* rotational speed */
69           u_short   sdkc_pcylinders;    /* physical cylinders */
70           u_short   sdkc_xxx5[7];
71 };
72 
73 /* controller info */
74 struct sun_dkctlr {
75           int       sdkc_addr;                    /* controller address */
76           short     sdkc_unit;                    /* unit (slave) address */
77           short     sdkc_type;                    /* controller type */
78           short     sdkc_flags;                   /* flags */
79 };
80 
81 /* partition info */
82 struct sun_dkpart {
83           int       sdkp_cyloffset;               /* starting cylinder */
84           int       sdkp_nsectors;                /* number of sectors */
85 };
86 
87 struct sun_disklabel {                            /* total size = 512 bytes */
88           char      sl_text[128];
89           char      sl_xxx1[292];
90 #define sl_bsdlabel sl_xxx1             /* Embedded NetBSD label */
91           u_short sl_rpm;                         /* rotational speed */
92           u_short   sl_pcylinders;                /* number of physical cyls */
93 #define   sl_pcyl    sl_pcylinders                /* XXX: old sun3 */
94           u_short sl_sparespercyl;      /* spare sectors per cylinder */
95           char      sl_xxx3[4];
96           u_short sl_interleave;                  /* interleave factor */
97           u_short   sl_ncylinders;                /* data cylinders */
98           u_short   sl_acylinders;                /* alternate cylinders */
99           u_short   sl_ntracks;                   /* tracks per cylinder */
100           u_short   sl_nsectors;                  /* sectors per track */
101           char      sl_xxx4[4];
102           struct sun_dkpart sl_part[8]; /* partition layout */
103           u_short   sl_magic;           /* == SUN_DKMAGIC */
104           u_short   sl_cksum;           /* xor checksum of all shorts */
105 };
106 
107 #define SUN_LABELOFFSET       128                 /* XXX we don't use this */
108