xref: /csrg-svn/sys/i386/stand/conf.c (revision 48816)
141072Swilliam /*-
241072Swilliam  * Copyright (c) 1990 The Regents of the University of California.
341072Swilliam  * All rights reserved.
441072Swilliam  *
541072Swilliam  * This code is derived from software contributed to Berkeley by
641072Swilliam  * William Jolitz.
741072Swilliam  *
8*48816Swilliam  * %sccs.include.redist.c%
941072Swilliam  *
10*48816Swilliam  *	@(#)conf.c	7.2 (Berkeley) 04/28/91
1141072Swilliam  */
1241072Swilliam 
13*48816Swilliam #include "param.h"
1441072Swilliam 
1541072Swilliam #include "saio.h"
16*48816Swilliam #ifdef BOOT
17*48816Swilliam extern exception;
18*48816Swilliam extern int debugflag;
19*48816Swilliam #endif
2041072Swilliam 
2141072Swilliam devread(io)
2241072Swilliam 	register struct iob *io;
2341072Swilliam {
2441072Swilliam 	int cc;
25*48816Swilliam 	char c;
2641072Swilliam 
2741072Swilliam 	io->i_flgs |= F_RDDATA;
2841072Swilliam 	io->i_error = 0;
29*48816Swilliam 	cc = (*devsw[io->i_dev].dv_strategy)(io, READ);
3041072Swilliam 	io->i_flgs &= ~F_TYPEMASK;
31*48816Swilliam 
32*48816Swilliam #ifdef BOOT
33*48816Swilliam if(/*io->i_error || */(c=scankbd()))
34*48816Swilliam 	_longjmp(&exception,1);
35*48816Swilliam #endif
3641072Swilliam 	return (cc);
3741072Swilliam }
3841072Swilliam 
3941072Swilliam devwrite(io)
4041072Swilliam 	register struct iob *io;
4141072Swilliam {
4241072Swilliam 	int cc;
43*48816Swilliam 	char c;
4441072Swilliam 
4541072Swilliam 	io->i_flgs |= F_WRDATA;
4641072Swilliam 	io->i_error = 0;
47*48816Swilliam 	cc = (*devsw[io->i_dev].dv_strategy)(io, WRITE);
4841072Swilliam 	io->i_flgs &= ~F_TYPEMASK;
49*48816Swilliam #ifdef BOOT
50*48816Swilliam if(/* io->i_error || */ (c=scankbd()))
51*48816Swilliam 	_longjmp(&exception,1);
52*48816Swilliam #endif
5341072Swilliam 	return (cc);
5441072Swilliam }
5541072Swilliam 
5641072Swilliam devopen(io)
5741072Swilliam 	register struct iob *io;
5841072Swilliam {
5941072Swilliam 
60*48816Swilliam 	(*devsw[io->i_dev].dv_open)(io);
6141072Swilliam }
6241072Swilliam 
6341072Swilliam devclose(io)
6441072Swilliam 	register struct iob *io;
6541072Swilliam {
6641072Swilliam 
67*48816Swilliam 	(*devsw[io->i_dev].dv_close)(io);
6841072Swilliam }
6941072Swilliam 
7041072Swilliam devioctl(io, cmd, arg)
7141072Swilliam 	register struct iob *io;
7241072Swilliam 	int cmd;
7341072Swilliam 	caddr_t arg;
7441072Swilliam {
7541072Swilliam 
76*48816Swilliam 	return ((*devsw[io->i_dev].dv_ioctl)(io, cmd, arg));
7741072Swilliam }
7841072Swilliam 
7941072Swilliam /*ARGSUSED*/
8041072Swilliam nullsys(io)
8141072Swilliam 	struct iob *io;
8241072Swilliam {
8341072Swilliam 
8441072Swilliam 	;
8541072Swilliam }
8641072Swilliam 
8741072Swilliam /*ARGSUSED*/
8841072Swilliam nullioctl(io, cmd, arg)
8941072Swilliam 	struct iob *io;
9041072Swilliam 	int cmd;
9141072Swilliam 	caddr_t arg;
9241072Swilliam {
9341072Swilliam 
9441072Swilliam 	return (ECMD);
9541072Swilliam }
9641072Swilliam 
9741072Swilliam int	nullsys(), nullioctl();
9841072Swilliam int	wdstrategy(), wdopen()/*, wdioctl()*/;
99*48816Swilliam int	fdstrategy(), fdopen()/*, fdioctl()*/;
10041072Swilliam 
10141072Swilliam struct devsw devsw[] = {
10241072Swilliam 	/*{ "xx",	xxstrategy,	xxopen,		nullsys, nullioctl },*/
10341072Swilliam 	{ "wd",	wdstrategy,	wdopen,		nullsys,/*wdioctl*/ nullioctl },
104*48816Swilliam 	{ "", 0, 0, 0, 0 }, /* swapdev place holder */
105*48816Swilliam 	{ "fd",	fdstrategy,	fdopen,		nullsys,/*fdioctl*/ nullioctl },
10641072Swilliam 	{ 0, 0, 0, 0, 0 },
10741072Swilliam };
108*48816Swilliam int ndevs = 3 ;
109