2003-02-14 04:05:22 +03:00
|
|
|
.\" $NetBSD: cons.9,v 1.9 2003/02/14 01:05:22 perry Exp $
|
2001-06-02 23:12:59 +04:00
|
|
|
.\"
|
|
|
|
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
|
|
|
|
.\" All rights reserved.
|
|
|
|
.\"
|
|
|
|
.\" 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.
|
|
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
|
|
.\" must display the following acknowledgement:
|
|
|
|
.\" This product includes software developed by the NetBSD
|
|
|
|
.\" Foundation, Inc. and its contributors.
|
|
|
|
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
|
|
.\" contributors may be used to endorse or promote products derived
|
|
|
|
.\" from this software without specific prior written permission.
|
|
|
|
.\"
|
|
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
|
|
|
|
.\"
|
|
|
|
.Dd June 2, 2001
|
|
|
|
.Dt CONS 9
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm cnbell ,
|
|
|
|
.Nm cngetc ,
|
|
|
|
.Nm cngetsn ,
|
|
|
|
.Nm cnpollc ,
|
|
|
|
.Nm cnputc
|
|
|
|
.Nd console access interface
|
|
|
|
.Sh SYNOPSIS
|
2002-02-13 11:17:26 +03:00
|
|
|
.Fd #include \*[Lt]dev/cons.h\*[Gt]
|
2001-06-02 23:12:59 +04:00
|
|
|
.Ft void
|
|
|
|
.Fn cnbell "u_int pitch" "u_int period" "u_int volume"
|
|
|
|
.Ft int
|
|
|
|
.Fn cngetc "void"
|
|
|
|
.Ft int
|
|
|
|
.Fn cngetsn "char *cp" "int size"
|
|
|
|
.Ft void
|
|
|
|
.Fn cnpollc "int on"
|
|
|
|
.Ft void
|
|
|
|
.Fn cnputc "int c"
|
|
|
|
.Sh DESCRIPTION
|
2002-10-14 17:43:14 +04:00
|
|
|
These functions operate over current console device.
|
|
|
|
The console has to be initialized first, before these functions could be used.
|
2001-06-02 23:12:59 +04:00
|
|
|
.Pp
|
2001-06-03 02:04:11 +04:00
|
|
|
Console input polling functions
|
2001-06-02 23:12:59 +04:00
|
|
|
.Fn cngetc ,
|
|
|
|
.Fn cngetsn
|
|
|
|
and
|
|
|
|
.Fn cnpollc
|
|
|
|
are only to be used during initial system
|
2002-10-14 17:43:14 +04:00
|
|
|
boot, e.g., when asking for root and dump device or to get
|
|
|
|
necessary user input within mountroothooks.
|
|
|
|
Once the system boots, user input is read via standard
|
2001-06-02 23:12:59 +04:00
|
|
|
.Xr tty 4
|
|
|
|
facilities.
|
|
|
|
.Pp
|
|
|
|
The following is a brief description of each function:
|
|
|
|
.Bl -tag -width "cngetsn()"
|
|
|
|
.It Fn cnbell
|
|
|
|
Ring a bell at appropriate
|
|
|
|
.Fa pitch ,
|
|
|
|
for duration of
|
|
|
|
.Fa period
|
2001-06-21 15:59:00 +04:00
|
|
|
milliseconds at given
|
|
|
|
.Fa volume .
|
2001-06-02 23:12:59 +04:00
|
|
|
Note that the
|
|
|
|
.Fa volume
|
|
|
|
value is ignored commonly.
|
|
|
|
.It Fn cngetc
|
|
|
|
Poll (busy wait) for a input and return the input key.
|
2003-02-14 04:05:22 +03:00
|
|
|
Returns 0 if there is no console input device.
|
2001-06-02 23:12:59 +04:00
|
|
|
.Fn cnpollc
|
|
|
|
.Em must
|
|
|
|
be called before
|
|
|
|
.Fn cngetc
|
|
|
|
could be used.
|
|
|
|
.Fn cngetc
|
|
|
|
should be used during kernel startup only.
|
|
|
|
.It Fn cngetsn
|
|
|
|
Read one line of user input, stop reading once the newline
|
2002-10-14 17:43:14 +04:00
|
|
|
key is input.
|
|
|
|
Input is echoed back.
|
|
|
|
This uses
|
2001-06-02 23:12:59 +04:00
|
|
|
.Fn cnpollc
|
|
|
|
and
|
|
|
|
.Fn cngetc .
|
|
|
|
Number of read characters is
|
|
|
|
.Fa size
|
2001-06-03 02:04:11 +04:00
|
|
|
at maximum, user is notified by console bell when the end
|
2002-10-14 17:43:14 +04:00
|
|
|
of input buffer is reached.
|
|
|
|
\*[Lt]Backspace\*[Gt] key works as expected.
|
|
|
|
\*[Lt]@\*[Gt] or \*[Lt]CTRL\*[Gt]-u make
|
2001-06-02 23:12:59 +04:00
|
|
|
.Fn cngetsn
|
|
|
|
discard input read so far, print newline and
|
|
|
|
wait for next input.
|
|
|
|
.Fn cngetsn
|
2001-06-21 15:59:00 +04:00
|
|
|
returns number of characters actually read, excluding
|
2001-06-02 23:12:59 +04:00
|
|
|
the final newline.
|
|
|
|
.Fa cp
|
|
|
|
is
|
|
|
|
.Em not
|
|
|
|
zero-ended before return.
|
|
|
|
.Fn cngetsn
|
|
|
|
should be used during kernel startup only.
|
|
|
|
.It Fn cnpollc
|
|
|
|
Switch the console driver to polling mode if
|
|
|
|
.Fa on
|
|
|
|
is nonzero, or back to interrupt driven mode if
|
|
|
|
.Fa on
|
2001-06-03 02:04:11 +04:00
|
|
|
is zero.
|
2001-06-02 23:12:59 +04:00
|
|
|
.Fn cnpollc
|
|
|
|
should be used during kernel startup only.
|
|
|
|
.It Fn cnputc
|
2002-10-14 17:43:14 +04:00
|
|
|
Console kernel output character routine.
|
|
|
|
Commonly, kernel code uses
|
2001-06-02 23:12:59 +04:00
|
|
|
.Xr printf 9
|
|
|
|
rather than using this low-level interface.
|
|
|
|
.El
|
|
|
|
.Sh EXAMPLES
|
2002-02-13 11:17:26 +03:00
|
|
|
This waits until a \*[Lt]Enter\*[Gt] key is pressed:
|
2001-06-02 23:12:59 +04:00
|
|
|
.Pp
|
|
|
|
.Bd -literal -compact
|
2001-06-03 02:04:11 +04:00
|
|
|
int c;
|
2001-06-02 23:12:59 +04:00
|
|
|
|
|
|
|
cnpollc(1);
|
|
|
|
for(;;) {
|
|
|
|
c = cngetc();
|
|
|
|
if ((c == '\\r' || (c == '\\n')) {
|
|
|
|
printf("\\n");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
cnpollc(0);
|
|
|
|
.Ed
|
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr pckbd 4 ,
|
|
|
|
.Xr pcppi 4 ,
|
|
|
|
.Xr tty 4 ,
|
|
|
|
.Xr wscons 4 ,
|
|
|
|
.Xr wskbd 4 ,
|
|
|
|
.Xr printf 9 ,
|
2002-09-20 07:35:33 +04:00
|
|
|
.Xr spl 9 ,
|
|
|
|
.Xr wscons 9
|