dcons.c (129944) | dcons.c (130077) |
---|---|
1/* 2 * Copyright (C) 2003 3 * Hidetoshi Shimokawa. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 18 unchanged lines hidden (view full) --- 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 * SUCH DAMAGE. 33 * 34 * $Id: dcons.c,v 1.65 2003/10/24 03:24:55 simokawa Exp $ | 1/* 2 * Copyright (C) 2003 3 * Hidetoshi Shimokawa. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 18 unchanged lines hidden (view full) --- 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 * SUCH DAMAGE. 33 * 34 * $Id: dcons.c,v 1.65 2003/10/24 03:24:55 simokawa Exp $ |
35 * $FreeBSD: head/sys/dev/dcons/dcons.c 129944 2004-06-01 13:49:28Z phk $ | 35 * $FreeBSD: head/sys/dev/dcons/dcons.c 130077 2004-06-04 16:02:56Z phk $ |
36 */ 37 38#include <sys/param.h> 39#include <sys/kernel.h> 40#include <sys/module.h> 41#include <sys/systm.h> 42#include <sys/types.h> 43#include <sys/conf.h> --- 143 unchanged lines hidden (view full) --- 187 tp->t_ispeed = tp->t_ospeed = TTYDEF_SPEED; 188 ttsetwater(tp); 189 } else if ((tp->t_state & TS_XCLUDE) && suser(td)) { 190 splx(s); 191 return (EBUSY); 192 } 193 splx(s); 194 | 36 */ 37 38#include <sys/param.h> 39#include <sys/kernel.h> 40#include <sys/module.h> 41#include <sys/systm.h> 42#include <sys/types.h> 43#include <sys/conf.h> --- 143 unchanged lines hidden (view full) --- 187 tp->t_ispeed = tp->t_ospeed = TTYDEF_SPEED; 188 ttsetwater(tp); 189 } else if ((tp->t_state & TS_XCLUDE) && suser(td)) { 190 splx(s); 191 return (EBUSY); 192 } 193 splx(s); 194 |
195 error = (*linesw[tp->t_line].l_open)(dev, tp); | 195 error = ttyld_open(tp, dev); |
196 197 return (error); 198} 199 200static int 201dcons_close(dev_t dev, int flag, int mode, struct THREAD *td) 202{ 203 int unit; 204 struct tty *tp; 205 206 unit = minor(dev); 207 if (unit != 0) 208 return (ENXIO); 209 210 tp = dev->si_tty; 211 if (tp->t_state & TS_ISOPEN) { | 196 197 return (error); 198} 199 200static int 201dcons_close(dev_t dev, int flag, int mode, struct THREAD *td) 202{ 203 int unit; 204 struct tty *tp; 205 206 unit = minor(dev); 207 if (unit != 0) 208 return (ENXIO); 209 210 tp = dev->si_tty; 211 if (tp->t_state & TS_ISOPEN) { |
212 (*linesw[tp->t_line].l_close)(tp, flag); | 212 ttyld_close(tp, flag); |
213 ttyclose(tp); 214 } 215 216 return (0); 217} 218 219static int 220dcons_tty_param(struct tty *tp, struct termios *t) --- 33 unchanged lines hidden (view full) --- 254 struct dcons_softc *dc; 255 int i, c, polltime; 256 257 for (i = 0; i < DCONS_NPORT; i ++) { 258 dc = &sc[i]; 259 tp = dc->dev->si_tty; 260 while ((c = dcons_checkc(dc)) != -1) 261 if (tp->t_state & TS_ISOPEN) | 213 ttyclose(tp); 214 } 215 216 return (0); 217} 218 219static int 220dcons_tty_param(struct tty *tp, struct termios *t) --- 33 unchanged lines hidden (view full) --- 254 struct dcons_softc *dc; 255 int i, c, polltime; 256 257 for (i = 0; i < DCONS_NPORT; i ++) { 258 dc = &sc[i]; 259 tp = dc->dev->si_tty; 260 while ((c = dcons_checkc(dc)) != -1) 261 if (tp->t_state & TS_ISOPEN) |
262 (*linesw[tp->t_line].l_rint)(c, tp); | 262 ttyld_rint(tp, c); |
263 } 264 polltime = hz / poll_hz; 265 if (polltime < 1) 266 polltime = 1; 267 callout_reset(&dcons_callout, polltime, dcons_timeout, tp); 268} 269 270static void --- 284 unchanged lines hidden (view full) --- 555 struct dcons_softc *dc; 556 557 dc = &sc[port]; 558 559 tp = dc->dev->si_tty; 560 561 if (tp->t_state & TS_ISOPEN) { 562 printf("dcons: still opened\n"); | 263 } 264 polltime = hz / poll_hz; 265 if (polltime < 1) 266 polltime = 1; 267 callout_reset(&dcons_callout, polltime, dcons_timeout, tp); 268} 269 270static void --- 284 unchanged lines hidden (view full) --- 555 struct dcons_softc *dc; 556 557 dc = &sc[port]; 558 559 tp = dc->dev->si_tty; 560 561 if (tp->t_state & TS_ISOPEN) { 562 printf("dcons: still opened\n"); |
563 (*linesw[tp->t_line].l_close)(tp, 0); | 563 ttyld_close(tp, 0); |
564 ttyclose(tp); 565 } 566 /* XXX 567 * must wait until all device are closed. 568 */ 569 tsleep((void *)dc, PWAIT, "dcodtc", hz/4); 570 destroy_dev(dc->dev); 571 --- 50 unchanged lines hidden --- | 564 ttyclose(tp); 565 } 566 /* XXX 567 * must wait until all device are closed. 568 */ 569 tsleep((void *)dc, PWAIT, "dcodtc", hz/4); 570 destroy_dev(dc->dev); 571 --- 50 unchanged lines hidden --- |