Use <sys/disklabel_mbr.h>
This commit is contained in:
parent
24d9973308
commit
135dc4e1ff
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: disklabel.h,v 1.4 1998/07/07 04:36:15 thorpej Exp $ */
|
||||
/* $NetBSD: disklabel.h,v 1.5 1999/01/27 21:33:20 thorpej Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
|
||||
|
@ -39,57 +39,10 @@
|
|||
#define MAXPARTITIONS 16 /* number of partitions */
|
||||
#define RAW_PART 2 /* raw partition: XX?c */
|
||||
|
||||
/* MBR partition table */
|
||||
#define MBRSECTOR 0 /* MBR sector number */
|
||||
#define MBRPARTOFF 446 /* Offset of MBR partition table */
|
||||
#define NMBRPART 4 /* # of partitions in MBR */
|
||||
#define MBRMAGICOFF 510 /* Offset of magic number */
|
||||
#define MBRMAGIC 0xaa55 /* Actual magic number */
|
||||
|
||||
struct mbr_partition {
|
||||
u_int8_t mbr_flag; /* default boot flag */
|
||||
u_int8_t mbr_shd; /* start head, IsN't Always Meaningful */
|
||||
u_int8_t mbr_ssect; /* start sector, INAM */
|
||||
u_int8_t mbr_scyl; /* start cylinder, INAM */
|
||||
u_int8_t mbr_type; /* partition type */
|
||||
u_int8_t mbr_ehd; /* end head, INAM */
|
||||
u_int8_t mbr_esect; /* end sector, INAM */
|
||||
u_int8_t mbr_ecyl; /* end cylinder, INAM */
|
||||
u_int32_t mbr_start; /* absolute start sector number */
|
||||
u_int32_t mbr_size; /* partition size in sectors */
|
||||
};
|
||||
|
||||
/* Known partition types: */
|
||||
#define MBR_EXTENDED 0x05 /* Extended partition */
|
||||
#define MBR_NETBSD 0xa9 /* NetBSD partition */
|
||||
#define MBR_386BSD 0xa5 /* 386BSD partition */
|
||||
|
||||
/* For compatibility reasons (mainly for fdisk): */
|
||||
#define dos_partition mbr_partition
|
||||
#define dp_flag mbr_flag
|
||||
#define dp_shd mbr_shd
|
||||
#define dp_ssect mbr_ssect
|
||||
#define dp_scyl mbr_scyl
|
||||
#define dp_typ mbr_type
|
||||
#define dp_ehd mbr_ehd
|
||||
#define dp_esect mbr_esect
|
||||
#define dp_ecyl mbr_ecyl
|
||||
#define dp_start mbr_start
|
||||
#define dp_size mbr_size
|
||||
|
||||
#define DOSPARTOFF MBRPARTOFF
|
||||
#define NDOSPART NMBRPART
|
||||
|
||||
#define DOSPTYP_NETBSD MBR_NETBSD
|
||||
|
||||
struct cpu_disklabel {
|
||||
int cd_start; /* Offset to NetBSD partition in blocks */
|
||||
};
|
||||
|
||||
/* Isolate the relevant bits to get sector and cylinder. */
|
||||
#define DPSECT(s) ((s) & 0x3f)
|
||||
#define DPCYL(c, s) ((c) + (((s) & 0xc0) << 2))
|
||||
|
||||
#ifdef _KERNEL
|
||||
struct disklabel;
|
||||
int bounds_check_with_label __P((struct buf *bp, struct disklabel *lp, int wlabel));
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: disksubr.c,v 1.4 1998/06/22 21:12:52 sommerfe Exp $ */
|
||||
/* $NetBSD: disksubr.c,v 1.5 1999/01/27 21:33:19 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1996 Wolfgang Solfrank.
|
||||
|
@ -162,35 +162,35 @@ mbr_to_label(dev, strat, bno, lp, pnpart, osdep, off)
|
|||
if (biowait(bp))
|
||||
goto done;
|
||||
|
||||
if (get_short(bp->b_data + MBRMAGICOFF) != MBRMAGIC)
|
||||
if (get_short(bp->b_data + MBR_MAGICOFF) != MBR_MAGIC)
|
||||
goto done;
|
||||
|
||||
/* Extract info from MBR partition table */
|
||||
mp = (struct mbr_partition *)(bp->b_data + MBRPARTOFF);
|
||||
mp = (struct mbr_partition *)(bp->b_data + MBR_PARTOFF);
|
||||
for (i = 0; i < NMBRPART; i++, mp++) {
|
||||
if (get_long(&mp->mbr_size)) {
|
||||
switch (mp->mbr_type) {
|
||||
case MBR_EXTENDED:
|
||||
if (get_long(&mp->mbrp_size)) {
|
||||
switch (mp->mbrp_type) {
|
||||
case MBR_PTYPE_EXT:
|
||||
if (*pnpart < MAXPARTITIONS) {
|
||||
pp = lp->d_partitions + *pnpart;
|
||||
bzero(pp, sizeof *pp);
|
||||
pp->p_size = get_long(&mp->mbr_size);
|
||||
pp->p_offset = off + get_long(&mp->mbr_start);
|
||||
pp->p_size = get_long(&mp->mbrp_size);
|
||||
pp->p_offset = off + get_long(&mp->mbrp_start);
|
||||
++*pnpart;
|
||||
}
|
||||
if (found = mbr_to_label(dev, strat,
|
||||
off + get_long(&mp->mbr_start),
|
||||
off + get_long(&mp->mbrp_start),
|
||||
lp, pnpart, osdep, off))
|
||||
goto done;
|
||||
break;
|
||||
#ifdef COMPAT_386BSD_MBRPART
|
||||
case MBR_386BSD:
|
||||
case MBR_PTYPE_386BSD:
|
||||
printf("WARNING: old BSD partition ID!\n");
|
||||
/* FALLTHROUGH */
|
||||
#endif
|
||||
case MBR_NETBSD:
|
||||
case MBR_PTYPE_NETBSD:
|
||||
/* Found the real NetBSD partition, use it */
|
||||
osdep->cd_start = off + get_long(&mp->mbr_start);
|
||||
osdep->cd_start = off + get_long(&mp->mbrp_start);
|
||||
if (found = get_netbsd_label(dev, strat, lp, osdep->cd_start))
|
||||
goto done;
|
||||
/* FALLTHROUGH */
|
||||
|
@ -198,8 +198,8 @@ mbr_to_label(dev, strat, bno, lp, pnpart, osdep, off)
|
|||
if (*pnpart < MAXPARTITIONS) {
|
||||
pp = lp->d_partitions + *pnpart;
|
||||
bzero(pp, sizeof *pp);
|
||||
pp->p_size = get_long(&mp->mbr_size);
|
||||
pp->p_offset = off + get_long(&mp->mbr_start);
|
||||
pp->p_size = get_long(&mp->mbrp_size);
|
||||
pp->p_offset = off + get_long(&mp->mbrp_start);
|
||||
++*pnpart;
|
||||
}
|
||||
break;
|
||||
|
@ -253,7 +253,7 @@ readdisklabel(dev, strat, lp, osdep)
|
|||
|
||||
osdep->cd_start = -1;
|
||||
|
||||
mbr_to_label(dev, strat, MBRSECTOR, lp, &lp->d_npartitions, osdep, 0);
|
||||
mbr_to_label(dev, strat, MBR_BBSECTOR, lp, &lp->d_npartitions, osdep, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue