2001-06-03 02:04:11 +04:00
|
|
|
.\" $NetBSD: cons.9,v 1.2 2001/06/02 22:04:11 jdolecek 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
|
|
|
|
.Fd #include <dev/cons.h>
|
|
|
|
.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
|
|
|
|
These functions operate over current console device. The console has
|
|
|
|
to be initialized first, before these functions could be used.
|
|
|
|
.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
|
|
|
|
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
|
|
|
|
.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
|
|
|
|
miliseconds at given
|
|
|
|
.Fa volume.
|
|
|
|
Note that the
|
|
|
|
.Fa volume
|
|
|
|
value is ignored commonly.
|
|
|
|
.It Fn cngetc
|
|
|
|
Poll (busy wait) for a input and return the input key.
|
|
|
|
.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
|
|
|
|
key is input. Input is echoed back. This
|
|
|
|
uses
|
|
|
|
.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
|
2001-06-02 23:12:59 +04:00
|
|
|
of input buffer is reached. Standard <Baskspace> key
|
|
|
|
work as expected. <@> key makes
|
|
|
|
.Fn cngetsn
|
|
|
|
discard input read so far, print newline and
|
|
|
|
wait for next input.
|
|
|
|
.Fn cngetsn
|
|
|
|
returns number of characters actually read, exluding
|
|
|
|
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.
|
|
|
|
.\" The system priority level has to be raised to splhigh before
|
|
|
|
.\" he polling mode could be switched on, so that the polled console device would
|
|
|
|
.\" ot be disturbed by interrupts. The system priority level has to be
|
|
|
|
.\" estored to previous level once the polling mode is switched back off.
|
2001-06-02 23:12:59 +04:00
|
|
|
.Fn cnpollc
|
|
|
|
should be used during kernel startup only.
|
|
|
|
.It Fn cnputc
|
|
|
|
Console kernel output character routine. Commonly, kernel code uses
|
|
|
|
.Xr printf 9
|
|
|
|
rather than using this low-level interface.
|
|
|
|
.El
|
|
|
|
.Sh EXAMPLES
|
|
|
|
This waits until a <Enter> key is pressed:
|
|
|
|
.Pp
|
|
|
|
.Bd -literal -compact
|
2001-06-03 02:04:11 +04:00
|
|
|
.\" int s, c;
|
|
|
|
int c;
|
2001-06-02 23:12:59 +04:00
|
|
|
|
2001-06-03 02:04:11 +04:00
|
|
|
.\" s = splhigh();
|
2001-06-02 23:12:59 +04:00
|
|
|
cnpollc(1);
|
|
|
|
for(;;) {
|
|
|
|
c = cngetc();
|
|
|
|
if ((c == '\\r' || (c == '\\n')) {
|
|
|
|
printf("\\n");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
cnpollc(0);
|
2001-06-03 02:04:11 +04:00
|
|
|
.\" splx(s);
|
2001-06-02 23:12:59 +04:00
|
|
|
.Ed
|
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr pckbd 4 ,
|
|
|
|
.Xr pcppi 4 ,
|
|
|
|
.Xr tty 4 ,
|
|
|
|
.Xr wscons 4 ,
|
|
|
|
.Xr wskbd 4 ,
|
|
|
|
.Xr printf 9 ,
|
|
|
|
.Xr spl 9
|