|
|
1.1 root 1: /*
2: * Copyright (c) 1982, 1986, 1988 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution is only permitted until one year after the first shipment
6: * of 4.4BSD by the Regents. Otherwise, redistribution and use in source and
7: * binary forms are permitted provided that: (1) source distributions retain
8: * this entire copyright notice and comment, and (2) distributions including
9: * binaries display the following acknowledgement: This product includes
10: * software developed by the University of California, Berkeley and its
11: * contributors'' in the documentation or other materials provided with the
12: * distribution and in all advertising materials mentioning features or use
13: * of this software. Neither the name of the University nor the names of
14: * its contributors may be used to endorse or promote products derived from
15: * this software without specific prior written permission.
16: * THIS SOFTWARE IS PROVIDED AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
17: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
18: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19: *
20: * @(#)dev.c 7.8 (Berkeley) 6/28/90
21: */
22:
23: #include "sys/param.h"
24: #include "saio.h"
25:
26: /*
27: * NB: the value "io->i_dev", used to offset the devsw[] array
28: * in the routines below, is munged by the vaxstand Makefile to work
29: * for certain boots.
30: */
31:
32: devread(io)
33: register struct iob *io;
34: {
35: int cc;
36:
37: io->i_flgs |= F_RDDATA;
38: io->i_error = 0;
39: cc = (*devsw[io->i_dev].dv_strategy)(io, READ);
40: io->i_flgs &= ~F_TYPEMASK;
41: return (cc);
42: }
43:
44: devwrite(io)
45: register struct iob *io;
46: {
47: int cc;
48:
49: io->i_flgs |= F_WRDATA;
50: io->i_error = 0;
51: cc = (*devsw[io->i_dev].dv_strategy)(io, WRITE);
52: io->i_flgs &= ~F_TYPEMASK;
53: return (cc);
54: }
55:
56: devopen(io)
57: register struct iob *io;
58: {
59: int ret;
60:
61: if (!(ret = (*devsw[io->i_dev].dv_open)(io)))
62: return (0);
63: printf("%s(%d,%d,%d,%d): ", devsw[io->i_dev].dv_name,
64: io->i_adapt, io->i_ctlr, io->i_unit, io->i_part);
65: switch(ret) {
66: case EIO:
67: break; /* already reported */
68: case EADAPT:
69: printf("bad adaptor number\n");
70: break;
71: case ECTLR:
72: printf("bad controller number\n");
73: break;
74: case EUNIT:
75: printf("bad drive number\n");
76: break;
77: case EPART:
78: printf("bad partition\n");
79: break;
80: case ERDLAB:
81: printf("can't read disk label\n");
82: break;
83: case EUNLAB:
84: printf("unlabeled\n");
85: break;
86: case ENXIO:
87: printf("bad device specification\n");
88: break;
89: default:
90: printf("unknown open error\n");
91: break;
92: }
93: return (ret);
94: }
95:
96: devclose(io)
97: register struct iob *io;
98: {
99: (*devsw[io->i_dev].dv_close)(io);
100: }
101:
102: devioctl(io, cmd, arg)
103: register struct iob *io;
104: int cmd;
105: caddr_t arg;
106: {
107: return ((*devsw[io->i_dev].dv_ioctl)(io, cmd, arg));
108: }
109:
110: /*ARGSUSED*/
111: nullsys(io)
112: struct iob *io;
113: {}
114:
115: /*ARGSUSED*/
116: nodev(io)
117: struct iob *io;
118: {
119: errno = EBADF;
120: }
121:
122: /*ARGSUSED*/
123: noioctl(io, cmd, arg)
124: struct iob *io;
125: int cmd;
126: caddr_t arg;
127: {
128: return (ECMD);
129: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.