2024-05-12 18:15:50 -07:00
|
|
|
/* $OpenBSD: cons.h,v 1.20 2024/05/13 01:15:50 jsg Exp $ */
|
1996-04-18 16:46:55 -07:00
|
|
|
/* $NetBSD: cons.h,v 1.14 1996/03/14 19:08:35 christos Exp $ */
|
1995-10-18 01:37:01 -07:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Copyright (c) 1988 University of Utah.
|
|
|
|
* Copyright (c) 1990, 1993
|
|
|
|
* The Regents of the University of California. All rights reserved.
|
|
|
|
*
|
|
|
|
* This code is derived from software contributed to Berkeley by
|
|
|
|
* the Systems Programming Group of the University of Utah Computer
|
|
|
|
* Science Department.
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
* modification, are permitted provided that the following conditions
|
|
|
|
* are met:
|
|
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer.
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
|
|
* documentation and/or other materials provided with the distribution.
|
2003-06-02 16:27:43 -07:00
|
|
|
* 3. Neither the name of the University nor the names of its contributors
|
1995-10-18 01:37:01 -07:00
|
|
|
* may be used to endorse or promote products derived from this software
|
|
|
|
* without specific prior written permission.
|
|
|
|
*
|
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
* SUCH DAMAGE.
|
|
|
|
*
|
|
|
|
* from: Utah $Hdr: cons.h 1.6 92/01/21$
|
|
|
|
*
|
|
|
|
* @(#)cons.h 8.1 (Berkeley) 6/10/93
|
|
|
|
*/
|
|
|
|
|
|
|
|
struct consdev {
|
2002-03-13 20:01:23 -08:00
|
|
|
/* probe hardware and fill in consdev info */
|
2002-03-14 17:20:03 -08:00
|
|
|
void (*cn_probe)(struct consdev *);
|
2002-03-13 20:01:23 -08:00
|
|
|
/* turn on as console */
|
2002-03-14 17:20:03 -08:00
|
|
|
void (*cn_init)(struct consdev *);
|
2002-03-13 20:01:23 -08:00
|
|
|
/* kernel getchar interface */
|
2002-03-14 17:20:03 -08:00
|
|
|
int (*cn_getc)(dev_t);
|
2002-03-13 20:01:23 -08:00
|
|
|
/* kernel putchar interface */
|
2002-03-14 17:20:03 -08:00
|
|
|
void (*cn_putc)(dev_t, int);
|
2002-03-13 20:01:23 -08:00
|
|
|
/* turn on and off polling */
|
2002-03-14 17:20:03 -08:00
|
|
|
void (*cn_pollc)(dev_t, int);
|
2002-03-13 20:01:23 -08:00
|
|
|
/* ring bell */
|
2002-03-14 17:20:03 -08:00
|
|
|
void (*cn_bell)(dev_t, u_int, u_int, u_int);
|
1995-10-18 01:37:01 -07:00
|
|
|
dev_t cn_dev; /* major/minor of device */
|
2008-01-23 08:37:55 -08:00
|
|
|
u_int cn_pri; /* picking order; the higher the better */
|
1995-10-18 01:37:01 -07:00
|
|
|
};
|
|
|
|
|
2008-01-23 08:37:55 -08:00
|
|
|
/* Values for cn_pri - policy for console selection. */
|
|
|
|
#define CN_DEAD 0 /* Device does not exist. */
|
|
|
|
#define CN_LOWPRI 1 /* Device exists and is low priority. */
|
|
|
|
#define CN_MIDPRI 2 /* Device exists and is medium priority. */
|
|
|
|
#define CN_HIGHPRI 3 /* Device exists and is high priority. */
|
|
|
|
#define CN_FORCED 4 /* Use this device. */
|
1995-10-18 01:37:01 -07:00
|
|
|
|
|
|
|
/* XXX */
|
|
|
|
#define CONSMAJOR 0
|
|
|
|
|
|
|
|
#ifdef _KERNEL
|
|
|
|
|
|
|
|
extern struct consdev constab[];
|
|
|
|
extern struct consdev *cn_tab;
|
2016-05-17 16:43:47 -07:00
|
|
|
extern struct tty *constty;
|
|
|
|
extern struct vnode *cn_devvp;
|
1995-10-18 01:37:01 -07:00
|
|
|
|
2001-03-01 12:54:32 -08:00
|
|
|
struct knote;
|
|
|
|
|
2002-03-13 17:26:25 -08:00
|
|
|
void cninit(void);
|
|
|
|
int cnopen(dev_t, int, int, struct proc *);
|
|
|
|
int cnclose(dev_t, int, int, struct proc *);
|
|
|
|
int cnread(dev_t, struct uio *, int);
|
|
|
|
int cnwrite(dev_t, struct uio *, int);
|
|
|
|
int cnioctl(dev_t, u_long, caddr_t, int, struct proc *);
|
|
|
|
int cnkqfilter(dev_t, struct knote *);
|
|
|
|
int cngetc(void);
|
|
|
|
void cnputc(int);
|
|
|
|
void cnpollc(int);
|
|
|
|
void cnbell(u_int, u_int, u_int);
|
|
|
|
void nullcnpollc(dev_t, int);
|
1995-10-18 01:37:01 -07:00
|
|
|
|
|
|
|
/* console-specific types */
|
2002-03-13 17:26:25 -08:00
|
|
|
#define dev_type_cnprobe(n) void n(struct consdev *)
|
|
|
|
#define dev_type_cninit(n) void n(struct consdev *)
|
|
|
|
#define dev_type_cngetc(n) int n(dev_t)
|
|
|
|
#define dev_type_cnputc(n) void n(dev_t, int)
|
|
|
|
#define dev_type_cnpollc(n) void n(dev_t, int)
|
|
|
|
#define dev_type_cnbell(n) void n(dev_t, u_int, u_int, u_int)
|
1995-10-18 01:37:01 -07:00
|
|
|
|
|
|
|
#define cons_decl(n) \
|
|
|
|
dev_decl(n,cnprobe); dev_decl(n,cninit); dev_decl(n,cngetc); \
|
2001-04-16 21:30:45 -07:00
|
|
|
dev_decl(n,cnputc); dev_decl(n,cnpollc); dev_decl(n,cnbell);
|
1995-10-18 01:37:01 -07:00
|
|
|
|
|
|
|
#define cons_init(n) { \
|
|
|
|
dev_init(1,n,cnprobe), dev_init(1,n,cninit), dev_init(1,n,cngetc), \
|
2006-01-01 03:59:37 -08:00
|
|
|
dev_init(1,n,cnputc), dev_init(1,n,cnpollc), NULL, \
|
|
|
|
NODEV, CN_DEAD }
|
1995-10-18 01:37:01 -07:00
|
|
|
|
2001-04-16 21:30:45 -07:00
|
|
|
#define cons_init_bell(n) { \
|
|
|
|
dev_init(1,n,cnprobe), dev_init(1,n,cninit), dev_init(1,n,cngetc), \
|
2006-01-01 03:59:37 -08:00
|
|
|
dev_init(1,n,cnputc), dev_init(1,n,cnpollc), dev_init(1,n,cnbell), \
|
|
|
|
NODEV, CN_DEAD }
|
2001-04-16 21:30:45 -07:00
|
|
|
|
1995-10-18 01:37:01 -07:00
|
|
|
#endif
|