xref: /original-bsd/sys/i386/i386/dkbad.c (revision 2c107824)
1 /*-
2  * Copyright (c) 1990 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * William Jolitz.
7  *
8  * %sccs.include.redist.c%
9  *
10  *	@(#)dkbad.c	5.5 (Berkeley) 10/11/92
11  */
12 
13 
14 #ifndef NOBADSECT
15 #include <sys/param.h>
16 #include <sys/buf.h>
17 #include <sys/dkbad.h>
18 
19 /*
20  * Search the bad sector table looking for
21  * the specified sector.  Return index if found.
22  * Return -1 if not found.
23  */
24 
25 isbad(bt, cyl, trk, sec)
26 	register struct dkbad *bt;
27 {
28 	register int i;
29 	register long blk, bblk;
30 
31 	blk = ((long)cyl << 16) + (trk << 8) + sec;
32 	for (i = 0; i < 126; i++) {
33 		bblk = ((long)bt->bt_bad[i].bt_cyl << 16) + bt->bt_bad[i].bt_trksec;
34 		if (blk == bblk)
35 			return (i);
36 		if (blk < bblk || bblk < 0)
37 			break;
38 	}
39 	return (-1);
40 }
41 #endif
42