From owner-svn-src-all@freebsd.org Mon Dec 23 21:32:08 2019 Return-Path: Delivered-To: svn-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A73A21D0BBC; Mon, 23 Dec 2019 21:32:08 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47hXcS3dpxz44RP; Mon, 23 Dec 2019 21:32:08 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 781181DE9A; Mon, 23 Dec 2019 21:32:08 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id xBNLW8n8066408; Mon, 23 Dec 2019 21:32:08 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id xBNLW7vC066405; Mon, 23 Dec 2019 21:32:07 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201912232132.xBNLW7vC066405@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Mon, 23 Dec 2019 21:32:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r356043 - in head/sys: dev/syscons isa X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: in head/sys: dev/syscons isa X-SVN-Commit-Revision: 356043 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.29 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: Mon, 23 Dec 2019 21:32:08 -0000 Author: kevans Date: Mon Dec 23 21:32:07 2019 New Revision: 356043 URL: https://svnweb.freebsd.org/changeset/base/356043 Log: syscons: drop keyboard index from softc Analysis seems to reveal that sc->keyboard >= 0 implies sc->kbd != NULL and there's no such scenario where sc->kbd is set (and theoretically used to rebuild sc->keyboard) with the keyboard unavailable. Drop the index softc. The index is only explicitly needed in few places, in which case we can just as easily grab it from sc->kbd. There's no need for keeping sc->kbd and sc->keyboard in sync when it can be readily accomplished with just the former. Modified: head/sys/dev/syscons/syscons.c head/sys/dev/syscons/syscons.h head/sys/isa/syscons_isa.c Modified: head/sys/dev/syscons/syscons.c ============================================================================== --- head/sys/dev/syscons/syscons.c Mon Dec 23 20:41:55 2019 (r356042) +++ head/sys/dev/syscons/syscons.c Mon Dec 23 21:32:07 2019 (r356043) @@ -635,8 +635,8 @@ sc_attach_unit(int unit, int flags) printf("%s%d:", SC_DRIVER_NAME, unit); if (sc->adapter >= 0) printf(" fb%d", sc->adapter); - if (sc->keyboard >= 0) - printf(", kbd%d", sc->keyboard); + if (sc->kbd != NULL) + printf(", kbd%d", sc->kbd->kb_index); if (scp->tsw) printf(", terminal emulator: %s (%s)", scp->tsw->te_name, scp->tsw->te_desc); @@ -838,8 +838,7 @@ sckbdevent(keyboard_t *thiskbd, int event, void *arg) break; case KBDIO_UNLOADING: sc->kbd = NULL; - sc->keyboard = -1; - kbd_release(thiskbd, (void *)&sc->keyboard); + kbd_release(thiskbd, (void *)&sc->kbd); goto done; default: error = EINVAL; @@ -1523,17 +1522,16 @@ sctty_ioctl(struct tty *tp, u_long cmd, caddr_t data, error = 0; if (sc->kbd != newkbd) { i = kbd_allocate(newkbd->kb_name, newkbd->kb_unit, - (void *)&sc->keyboard, sckbdevent, sc); + (void *)&sc->kbd, sckbdevent, sc); /* i == newkbd->kb_index */ if (i >= 0) { if (sc->kbd != NULL) { save_kbd_state(sc->cur_scp); kbd_release( - sc->kbd, (void *)&sc->keyboard); + sc->kbd, (void *)&sc->kbd); } sc->kbd = kbd_get_keyboard(i); /* sc->kbd == newkbd */ - sc->keyboard = i; (void)kbdd_ioctl(sc->kbd, KDSKBMODE, (caddr_t)&sc->cur_scp->kbd_mode); update_kbd_state(sc->cur_scp, @@ -1551,11 +1549,9 @@ sctty_ioctl(struct tty *tp, u_long cmd, caddr_t data, error = 0; if (sc->kbd != NULL) { save_kbd_state(sc->cur_scp); - error = kbd_release(sc->kbd, (void *)&sc->keyboard); - if (error == 0) { + error = kbd_release(sc->kbd, (void *)&sc->kbd); + if (error == 0) sc->kbd = NULL; - sc->keyboard = -1; - } } splx(s); return error; @@ -2200,6 +2196,7 @@ scrn_timer(void *arg) sc_softc_t *sc; scr_stat *scp; int again, rate; + int kbdidx; again = (arg != NULL); if (arg != NULL) @@ -2220,9 +2217,9 @@ scrn_timer(void *arg) /* try to allocate a keyboard automatically */ if (kbd_time_stamp != time_uptime) { kbd_time_stamp = time_uptime; - sc->keyboard = sc_allocate_keyboard(sc, -1); - if (sc->keyboard >= 0) { - sc->kbd = kbd_get_keyboard(sc->keyboard); + kbdidx = sc_allocate_keyboard(sc, -1); + if (kbdidx >= 0) { + sc->kbd = kbd_get_keyboard(kbdidx); (void)kbdd_ioctl(sc->kbd, KDSKBMODE, (caddr_t)&sc->cur_scp->kbd_mode); update_kbd_state(sc->cur_scp, @@ -3229,6 +3226,7 @@ scinit(int unit, int flags) scr_stat *scp; video_adapter_t *adp; int col; + int kbdidx; int row; int i; @@ -3256,9 +3254,10 @@ scinit(int unit, int flags) adp = sc->adp; sc->adp = NULL; } - if (sc->keyboard >= 0) { - DPRINTF(5, ("sc%d: releasing kbd%d\n", unit, sc->keyboard)); - i = kbd_release(sc->kbd, (void *)&sc->keyboard); + if (sc->kbd != NULL) { + DPRINTF(5, ("sc%d: releasing kbd%d\n", unit, + sc->kbd->kb_index)); + i = kbd_release(sc->kbd, (void *)&sc->kbd); DPRINTF(5, ("sc%d: kbd_release returned %d\n", unit, i)); if (sc->kbd != NULL) { DPRINTF(5, @@ -3272,10 +3271,10 @@ scinit(int unit, int flags) sc->adp = vid_get_adapter(sc->adapter); /* assert((sc->adapter >= 0) && (sc->adp != NULL)) */ - sc->keyboard = sc_allocate_keyboard(sc, unit); - DPRINTF(1, ("sc%d: keyboard %d\n", unit, sc->keyboard)); + kbdidx = sc_allocate_keyboard(sc, unit); + DPRINTF(1, ("sc%d: keyboard %d\n", unit, kbdidx)); - sc->kbd = kbd_get_keyboard(sc->keyboard); + sc->kbd = kbd_get_keyboard(kbdidx); if (sc->kbd != NULL) { DPRINTF(1, ("sc%d: kbd index:%d, unit:%d, flags:0x%x\n", unit, @@ -3463,8 +3462,8 @@ scterm(int unit, int flags) #endif /* release the keyboard and the video card */ - if (sc->keyboard >= 0) - kbd_release(sc->kbd, &sc->keyboard); + if (sc->kbd != NULL) + kbd_release(sc->kbd, &sc->kbd); if (sc->adapter >= 0) vid_release(sc->adp, &sc->adapter); @@ -3491,7 +3490,6 @@ scterm(int unit, int flags) /* XXX vtb, history */ } bzero(sc, sizeof(*sc)); - sc->keyboard = -1; sc->adapter = -1; } @@ -4362,7 +4360,7 @@ sc_allocate_keyboard(sc_softc_t *sc, int unit) keyboard_info_t ki; idx0 = - kbd_allocate("kbdmux", -1, (void *)&sc->keyboard, sckbdevent, sc); + kbd_allocate("kbdmux", -1, (void *)&sc->kbd, sckbdevent, sc); if (idx0 != -1) { k0 = kbd_get_keyboard(idx0); @@ -4381,7 +4379,7 @@ sc_allocate_keyboard(sc_softc_t *sc, int unit) } } else idx0 = kbd_allocate( - "*", unit, (void *)&sc->keyboard, sckbdevent, sc); + "*", unit, (void *)&sc->kbd, sckbdevent, sc); return (idx0); } Modified: head/sys/dev/syscons/syscons.h ============================================================================== --- head/sys/dev/syscons/syscons.h Mon Dec 23 20:41:55 2019 (r356042) +++ head/sys/dev/syscons/syscons.h Mon Dec 23 21:32:07 2019 (r356043) @@ -217,8 +217,7 @@ typedef struct sc_softc { #define SC_INIT_DONE (1 << 16) #define SC_SPLASH_SCRN (1 << 17) - int keyboard; /* -1 if unavailable */ - struct keyboard *kbd; + struct keyboard *kbd; /* NULL if unavailable. */ int adapter; struct video_adapter *adp; Modified: head/sys/isa/syscons_isa.c ============================================================================== --- head/sys/isa/syscons_isa.c Mon Dec 23 20:41:55 2019 (r356042) +++ head/sys/isa/syscons_isa.c Mon Dec 23 21:32:07 2019 (r356043) @@ -117,7 +117,7 @@ sc_softc_t } sc->unit = unit; if ((sc->flags & SC_INIT_DONE) == 0) { - sc->keyboard = -1; + sc->kbd = NULL; sc->adapter = -1; sc->cursor_char = SC_CURSOR_CHAR; sc->mouse_char = SC_MOUSE_CHAR;