From owner-svn-src-all@FreeBSD.ORG Sat Dec 17 16:17:03 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8D9871065672; Sat, 17 Dec 2011 16:17:03 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 763AE8FC0C; Sat, 17 Dec 2011 16:17:02 +0000 (UTC) Received: from porto.starpoint.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id SAA06369; Sat, 17 Dec 2011 18:17:01 +0200 (EET) (envelope-from avg@FreeBSD.org) Received: from localhost ([127.0.0.1]) by porto.starpoint.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1RbwwW-0009jm-KS; Sat, 17 Dec 2011 18:17:00 +0200 Message-ID: <4EECC07B.7090709@FreeBSD.org> Date: Sat, 17 Dec 2011 18:16:59 +0200 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:8.0) Gecko/20111206 Thunderbird/8.0 MIME-Version: 1.0 To: src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, svn-src-head@FreeBSD.org References: <201112171557.pBHFvdel066310@svn.freebsd.org> In-Reply-To: <201112171557.pBHFvdel066310@svn.freebsd.org> X-Enigmail-Version: undefined Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: Subject: Re: svn commit: r228644 - head/sys/dev/syscons X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Dec 2011 16:17:03 -0000 on 17/12/2011 17:57 Andriy Gapon said the following: > Author: avg > Date: Sat Dec 17 15:57:39 2011 > New Revision: 228644 > URL: http://svn.freebsd.org/changeset/base/228644 > > Log: > syscons: provide a first iteration of cngrab/cnungrab implementation > > - put underlying keyboard(s) into the polling mode for the whole > duration of the grab, instead of the previous behavior of going into > and out of the polling mode around each polling attempt > - ditto for setting K_XLATE mode and enabling a disabled keyboard > > Inspired by: bde > MFC after: 2 months > > Modified: > head/sys/dev/syscons/syscons.c > head/sys/dev/syscons/syscons.h > > Modified: head/sys/dev/syscons/syscons.c > ============================================================================== > --- head/sys/dev/syscons/syscons.c Sat Dec 17 15:50:45 2011 (r228643) > +++ head/sys/dev/syscons/syscons.c Sat Dec 17 15:57:39 2011 (r228644) > @@ -1613,11 +1613,46 @@ sc_cnterm(struct consdev *cp) > static void > sc_cngrab(struct consdev *cp) > { > + scr_stat *scp; > + > + scp = sc_console->sc->cur_scp; > + if (scp->sc->kbd == NULL) > + return; > + > + if (scp->grabbed++ > 0) > + return; > + > + /* > + * Make sure the keyboard is accessible even when the kbd device > + * driver is disabled. > + */ > + kbdd_enable(scp->sc->kbd); > + > + /* we shall always use the keyboard in the XLATE mode here */ > + scp->kbd_prev_mode = scp->kbd_mode; > + scp->kbd_mode = K_XLATE; > + (void)kbdd_ioctl(scp->sc->kbd, KDSKBMODE, (caddr_t)&scp->kbd_mode); > + > + kbdd_poll(scp->sc->kbd, TRUE); > } What people think about adding something like the following best effort attempt to switch to console VTY? Index: sys/dev/syscons/syscons.c =================================================================== --- sys/dev/syscons/syscons.c (revision 228644) +++ sys/dev/syscons/syscons.c (working copy) @@ -1615,7 +1615,14 @@ { scr_stat *scp; + if (!cold && + sc_console->sc->cur_scp->index != sc_console->index && + sc_console->sc->cur_scp->smode.mode == VT_AUTO && + sc_console->smode.mode == VT_AUTO) + sc_switch_scr(sc_console->sc, sc_console->index); + scp = sc_console->sc->cur_scp; + if (scp->sc->kbd == NULL) return; The code is borrowed from scshutdown(). -- Andriy Gapon