|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: * Copyright (c) 1987, 1988 NeXT, Inc.
24: *
25: * HISTORY
26: * 7-Jan-93 Mac Gillon (mgillon) at NeXT
27: * Integrated POSIX support
28: *
29: * 12-Aug-87 John Seamons (jks) at NeXT
30: * Ported to NeXT.
31: */
32:
33: /*
34: * Indirect driver for console.
35: */
36: #include <sys/param.h>
37: #include <sys/systm.h>
38: #include <sys/conf.h>
39: #include <sys/ioctl.h>
40: #include <sys/tty.h>
41: #include <sys/proc.h>
42: #include <sys/uio.h>
43: #include <dev/ppc/cons.h>
44:
45: struct tty cons;
46: struct tty *constty; /* current console device */
47:
48: /*ARGSUSED*/
49: int
50: consopen(dev, flag, devtype, pp)
51: dev_t dev;
52: int flag, devtype;
53: struct proc *pp;
54: {
55: dev_t device;
56:
57: if (constty)
58: device = constty->t_dev;
59: else
60: device = cons.t_dev;
61: return ((*cdevsw[major(device)].d_open)(device, flag, devtype, pp));
62: }
63:
64: /*ARGSUSED*/
65: int
66: consclose(dev, flag, mode, pp)
67: dev_t dev;
68: int flag, mode;
69: struct proc *pp;
70: {
71: dev_t device;
72:
73: if (constty)
74: device = constty->t_dev;
75: else
76: device = cons.t_dev;
77: return ((*cdevsw[major(device)].d_close)(device, flag, mode, pp));
78: }
79:
80: /*ARGSUSED*/
81: int
82: consread(dev, uio, ioflag)
83: dev_t dev;
84: struct uio *uio;
85: int ioflag;
86: {
87: dev_t device;
88:
89: if (constty)
90: device = constty->t_dev;
91: else
92: device = cons.t_dev;
93: return ((*cdevsw[major(device)].d_read)(device, uio, ioflag));
94: }
95:
96: /*ARGSUSED*/
97: int
98: conswrite(dev, uio, ioflag)
99: dev_t dev;
100: struct uio *uio;
101: int ioflag;
102: {
103: dev_t device;
104:
105: if (constty)
106: device = constty->t_dev;
107: else
108: device = cons.t_dev;
109: return ((*cdevsw[major(device)].d_write)(device, uio, ioflag));
110: }
111:
112: /*ARGSUSED*/
113: int
114: consioctl(dev, cmd, addr, flag, p)
115: dev_t dev;
116: int cmd;
117: caddr_t addr;
118: int flag;
119: struct proc *p;
120: {
121: dev_t device;
122:
123: if (constty)
124: device = constty->t_dev;
125: else
126: device = cons.t_dev;
127: /*
128: * Superuser can always use this to wrest control of console
129: * output from the "virtual" console.
130: */
131: if (cmd == TIOCCONS && constty) {
132: int error = suser(p->p_ucred, (u_short *) NULL);
133: if (error)
134: return (error);
135: constty = NULL;
136: return (0);
137: }
138: return ((*cdevsw[major(device)].d_ioctl)(device, cmd, addr, flag, p));
139: }
140:
141: /*ARGSUSED*/
142: int
143: consselect(dev, flag, p)
144: dev_t dev;
145: int flag;
146: struct proc *p;
147: {
148: dev_t device;
149:
150: if (constty)
151: device = constty->t_dev;
152: else
153: device = cons.t_dev;
154: return ((*cdevsw[major(device)].d_select)(device, flag, p));
155: }
156:
157: int
158: cons_getc()
159: {
160: dev_t device;
161:
162: if (constty)
163: device = constty->t_dev;
164: else
165: device = cons.t_dev;
166: return ((*cdevsw[major(device)].d_getc)(device));
167: }
168:
169: /*ARGSUSED*/
170: int
171: cons_putc(c)
172: char c;
173: {
174: dev_t device;
175:
176: if (constty)
177: device = constty->t_dev;
178: else
179: device = cons.t_dev;
180: return ((*cdevsw[major(device)].d_putc)(device, c));
181: }
182:
183: /*
184: * Write message to console; create an alert panel if no text-type window
185: * currently exists. Caller must call alert_done() when finished.
186: * The height and width arguments are not used; they are provided for
187: * compatibility with the 68k version of alert().
188: */
189: int
190: alert(
191: int width,
192: int height,
193: const char *title,
194: const char *msg,
195: int p1,
196: int p2,
197: int p3,
198: int p4,
199: int p5,
200: int p6,
201: int p7,
202: int p8)
203: {
204: char smsg[200];
205:
206: sprintf(smsg, msg, p1, p2, p3, p4, p5, p6, p7, p8);
207: #if FIXME /* [ */
208: /* DoAlert(title, smsg); */
209: #else
210: printf("%s\n",smsg);
211: #endif /* FIXME ] */
212:
213: return 0;
214: }
215:
216: int
217: alert_done()
218: {
219: /* DoRestore(); */
220: return 0;
221: }
222:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.