1/*
2 * Copyright (c) 1988 University of Utah.
3 * Copyright (c) 1991 The Regents of the University of California.
4 * All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * the Systems Programming Group of the University of Utah Computer
8 * Science Department.
--- 22 unchanged lines hidden (view full) ---
31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 * from: @(#)cons.c 7.2 (Berkeley) 5/9/91
39 * $FreeBSD: head/sys/kern/tty_cons.c 50477 1999-08-28 01:08:13Z peter $
40 */
41
42#include <sys/param.h>
43#include <sys/systm.h>
44#include <sys/conf.h>
45#include <sys/kernel.h>
46#include <sys/reboot.h>
47#include <sys/sysctl.h>
--- 47 unchanged lines hidden (view full) ---
95 */
96
97static u_char cn_is_open; /* nonzero if logical console is open */
98static int openmode, openflag; /* how /dev/console was openned */
99static u_char cn_phys_is_open; /* nonzero if physical device is open */
100static d_close_t *cn_phys_close; /* physical device close function */
101static d_open_t *cn_phys_open; /* physical device open function */
102struct consdev *cn_tab; /* physical console device info */
103static struct tty *cn_tp; /* physical console tty struct */
104static dev_t condev_t; /* represents the device private info */
105
106CONS_DRIVER(cons, NULL, NULL, NULL, NULL, NULL, NULL);
107
108void
109cninit()
110{
111 struct consdev **list, *best_cp, *cp;
--- 58 unchanged lines hidden (view full) ---
170 /*
171 * Hook the open and close functions.
172 */
173 cdp = devsw(cn_tab->cn_dev);
174 cn_phys_close = cdp->d_close;
175 cdp->d_close = cnclose;
176 cn_phys_open = cdp->d_open;
177 cdp->d_open = cnopen;
178 cn_tp = (*cdp->d_devtotty)(cn_tab->cn_dev);
179 cn_dev_t = cn_tab->cn_dev;
180 cn_udev_t = dev2udev(cn_dev_t);
181}
182
183static void
184cnuninit(void)
185{
186 struct cdevsw *cdp;
--- 4 unchanged lines hidden (view full) ---
191 /*
192 * Unhook the open and close functions.
193 */
194 cdp = devsw(cn_tab->cn_dev);
195 cdp->d_close = cn_phys_close;
196 cn_phys_close = NULL;
197 cdp->d_open = cn_phys_open;
198 cn_phys_open = NULL;
199 cn_tp = NULL;
200 cn_dev_t = NODEV;
201 cn_udev_t = NOUDEV;
202}
203
204/*
205 * User has changed the state of the console muting.
206 * This may require us to open or close the device in question.
207 */
--- 68 unchanged lines hidden (view full) ---
276 */
277 if (dev == cndev)
278 cn_phys_is_open = 1;
279 else if (physdev == cndev) {
280 openmode = mode;
281 openflag = flag;
282 cn_is_open = 1;
283 }
284 }
285 return (retval);
286}
287
288static int
289cnclose(dev, flag, mode, p)
290 dev_t dev;
291 int flag, mode;
292 struct proc *p;
293{
294 dev_t cndev;
295
296 if (cn_tab == NULL)
297 return (0);
298 cndev = cn_tab->cn_dev;
299 /*
300 * act appropriatly depending on whether it's /dev/console
301 * or the pysical device (e.g. /dev/sio) that's being closed.
302 * in either case, don't actually close the device unless
303 * both are closed.
304 */
305 if (dev == cndev) {
306 /* the physical device is about to be closed */
--- 136 unchanged lines hidden ---
2 * Copyright (c) 1988 University of Utah.
3 * Copyright (c) 1991 The Regents of the University of California.
4 * All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * the Systems Programming Group of the University of Utah Computer
8 * Science Department.
--- 22 unchanged lines hidden (view full) ---
31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 * from: @(#)cons.c 7.2 (Berkeley) 5/9/91
39 * $FreeBSD: head/sys/kern/tty_cons.c 50477 1999-08-28 01:08:13Z peter $
40 */
41
42#include <sys/param.h>
43#include <sys/systm.h>
44#include <sys/conf.h>
45#include <sys/kernel.h>
46#include <sys/reboot.h>
47#include <sys/sysctl.h>
--- 47 unchanged lines hidden (view full) ---
95 */
96
97static u_char cn_is_open; /* nonzero if logical console is open */
98static int openmode, openflag; /* how /dev/console was openned */
99static u_char cn_phys_is_open; /* nonzero if physical device is open */
100static d_close_t *cn_phys_close; /* physical device close function */
101static d_open_t *cn_phys_open; /* physical device open function */
102struct consdev *cn_tab; /* physical console device info */
103static struct tty *cn_tp; /* physical console tty struct */
104static dev_t condev_t; /* represents the device private info */
105
106CONS_DRIVER(cons, NULL, NULL, NULL, NULL, NULL, NULL);
107
108void
109cninit()
110{
111 struct consdev **list, *best_cp, *cp;
--- 58 unchanged lines hidden (view full) ---
170 /*
171 * Hook the open and close functions.
172 */
173 cdp = devsw(cn_tab->cn_dev);
174 cn_phys_close = cdp->d_close;
175 cdp->d_close = cnclose;
176 cn_phys_open = cdp->d_open;
177 cdp->d_open = cnopen;
178 cn_tp = (*cdp->d_devtotty)(cn_tab->cn_dev);
179 cn_dev_t = cn_tab->cn_dev;
180 cn_udev_t = dev2udev(cn_dev_t);
181}
182
183static void
184cnuninit(void)
185{
186 struct cdevsw *cdp;
--- 4 unchanged lines hidden (view full) ---
191 /*
192 * Unhook the open and close functions.
193 */
194 cdp = devsw(cn_tab->cn_dev);
195 cdp->d_close = cn_phys_close;
196 cn_phys_close = NULL;
197 cdp->d_open = cn_phys_open;
198 cn_phys_open = NULL;
199 cn_tp = NULL;
200 cn_dev_t = NODEV;
201 cn_udev_t = NOUDEV;
202}
203
204/*
205 * User has changed the state of the console muting.
206 * This may require us to open or close the device in question.
207 */
--- 68 unchanged lines hidden (view full) ---
276 */
277 if (dev == cndev)
278 cn_phys_is_open = 1;
279 else if (physdev == cndev) {
280 openmode = mode;
281 openflag = flag;
282 cn_is_open = 1;
283 }
284 }
285 return (retval);
286}
287
288static int
289cnclose(dev, flag, mode, p)
290 dev_t dev;
291 int flag, mode;
292 struct proc *p;
293{
294 dev_t cndev;
295
296 if (cn_tab == NULL)
297 return (0);
298 cndev = cn_tab->cn_dev;
299 /*
300 * act appropriatly depending on whether it's /dev/console
301 * or the pysical device (e.g. /dev/sio) that's being closed.
302 * in either case, don't actually close the device unless
303 * both are closed.
304 */
305 if (dev == cndev) {
306 /* the physical device is about to be closed */
--- 136 unchanged lines hidden ---