|
|
1.1 root 1: /* (-lgl
2: * COHERENT Driver Kit Version 1.1.0
3: * Copyright (c) 1982, 1990 by Mark Williams Company.
4: * All rights reserved. May not be copied without permission.
5: -lgl) */
6: /**
7: *
8: * fdisk( dev, fp ) -- Fixed Disk Configuration
9: * dev_t dev;
10: * struct fdisk_s *fp;
11: *
12: * Input: dev = special device to read partition information from
13: * fp = pointer to memory-resident partition info (to update)
14: *
15: * Action: Open special device for reading.
16: * Read first block from the device.
17: * If valid signature present on block,
18: * copy partition information to memory
19: *
20: * Return: 1 = partition information successfully updated
21: * 0 = failure (could not read block, or bad signature)
22: */
23:
24: #include <sys/coherent.h>
25: #include <sys/uproc.h>
26: #include <errno.h>
27: #include <sys/inode.h>
28: #include <sys/fdisk.h>
29: #include <sys/buf.h>
30: #include <sys/con.h>
31:
32: fdisk( dev, fp )
33: dev_t dev;
34: register struct fdisk_s *fp;
35: {
36: register struct hdisk_s *hp;
37: BUF *bp;
38: int s, i;
39: int ret = 0;
40:
41: s = sphi( );
42: dopen( dev, IPR, DFBLK );
43:
44: if ( u.u_error == 0 ) { /* special device now open */
45:
46: if (bp = bread(dev, (daddr_t) 0, 1)) { /* data read */
47:
48: /* buffer cache is in kernel data space */
49: hp = FP_OFF(bp->b_faddr);
50:
51: if ( hp->hd_sig == HDSIG ) { /* valid data */
52:
53: for (i=0; i < NPARTN; ++i)
54: *fp++ = hp->hd_partn[i];
55:
56: ret = 1;
57: }
58: brelease( bp );
59: }
60: dclose( dev );
61: }
62: spl( s );
63: return ret;
64: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.