aboutsummaryrefslogtreecommitdiff
path: root/sys/sys/dkbad.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/sys/dkbad.h')
-rw-r--r--sys/sys/dkbad.h31
1 files changed, 28 insertions, 3 deletions
diff --git a/sys/sys/dkbad.h b/sys/sys/dkbad.h
index 5daecded032f..be5af911b12c 100644
--- a/sys/sys/dkbad.h
+++ b/sys/sys/dkbad.h
@@ -31,11 +31,11 @@
* SUCH DAMAGE.
*
* @(#)dkbad.h 8.1 (Berkeley) 6/2/93
- * $Id: dkbad.h,v 1.2 1994/08/02 07:52:50 davidg Exp $
+ * $Id: dkbad.h,v 1.3 1994/08/21 04:41:40 paul Exp $
*/
#ifndef _SYS_DKBAD_H_
-#define _SYS_DKBAD_H_
+#define _SYS_DKBAD_H_
/*
* Definitions needed to perform bad sector revectoring ala DEC STD 144.
@@ -56,6 +56,11 @@
* making sure that it does not overlap the bad sector information or any
* replacement sectors.
*/
+
+#define DKBAD_MAGIC 0x4321 /* normal value for bt_flag */
+#define DKBAD_MAXBAD 126 /* maximum bad sectors supported */
+#define DKBAD_NOCYL 0xffff /* cylinder to mark end of disk table */
+
struct dkbad {
long bt_csn; /* cartridge serial number */
u_short bt_mbz; /* unused; should be 0 */
@@ -63,7 +68,7 @@ struct dkbad {
struct bt_bad {
u_short bt_cyl; /* cylinder number of bad sector */
u_short bt_trksec; /* track and sector number */
- } bt_bad[126];
+ } bt_bad[DKBAD_MAXBAD];
};
#define ECC 0
@@ -71,4 +76,24 @@ struct dkbad {
#define BSE 2
#define CONT 3
+#ifdef KERNEL
+#include <sys/conf.h>
+
+#define DKBAD_NOSECT (-1) /* sector to mark end of core table */
+
+struct dkbad_intern {
+ daddr_t bi_maxspare; /* last spare sector */
+ u_int bi_nbad; /* actual dimension of bi_badsect[] */
+ long bi_bad[DKBAD_MAXBAD + 1]; /* actually usually less */
+};
+
+struct disklabel;
+
+struct dkbad_intern *internbad144 __P((struct dkbad *btp,
+ struct disklabel *lp));
+char *readbad144 __P((dev_t dev, d_strategy_t *strat,
+ struct disklabel *lp, struct dkbad *btp));
+daddr_t transbad144 __P((struct dkbad_intern *bip, daddr_t blkno));
#endif
+
+#endif /* !_SYS_DKBAD_H_ */