From owner-svn-src-all@freebsd.org Sun Dec 15 16:28:13 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 16E101C86C3; Sun, 15 Dec 2019 16:28:13 +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 47bVFS5MRWz4g6y; Sun, 15 Dec 2019 16:28:12 +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 99C9CFB7B; Sun, 15 Dec 2019 16:28:12 +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 xBFGSCfm060008; Sun, 15 Dec 2019 16:28:12 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id xBFGSCN2060007; Sun, 15 Dec 2019 16:28:12 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <201912151628.xBFGSCN2060007@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Sun, 15 Dec 2019 16:28:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r355775 - head/sys/dev/kbd X-SVN-Group: head X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: head/sys/dev/kbd X-SVN-Commit-Revision: 355775 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: Sun, 15 Dec 2019 16:28:13 -0000 Author: kevans Date: Sun Dec 15 16:28:12 2019 New Revision: 355775 URL: https://svnweb.freebsd.org/changeset/base/355775 Log: kbd: convert kbdd_* macros to inline functions This reduces the noise when interested parties wish to de-Giant kbd; these accesses to kbdsw will need to be properly locked. Modified: head/sys/dev/kbd/kbdreg.h Modified: head/sys/dev/kbd/kbdreg.h ============================================================================== --- head/sys/dev/kbd/kbdreg.h Sun Dec 15 14:28:38 2019 (r355774) +++ head/sys/dev/kbd/kbdreg.h Sun Dec 15 16:28:12 2019 (r355775) @@ -163,50 +163,6 @@ typedef struct keyboard_switch { kbd_diag_t *diag; } keyboard_switch_t; -/* - * Keyboard disciplines: call actual handlers via kbdsw[]. - */ -#define kbdd_probe(kbd, unit, arg, flags) \ - (*kbdsw[(kbd)->kb_index]->probe)((unit), (arg), (flags)) -#define kbdd_init(kbd, unit, kbdpp, arg, flags) \ - (*kbdsw[(kbd)->kb_index]->init)((unit), (kbdpp), (arg), (flags)) -#define kbdd_term(kbd) \ - (*kbdsw[(kbd)->kb_index]->term)((kbd)) -#define kbdd_intr(kbd, arg) \ - (*kbdsw[(kbd)->kb_index]->intr)((kbd), (arg)) -#define kbdd_test_if(kbd) \ - (*kbdsw[(kbd)->kb_index]->test_if)((kbd)) -#define kbdd_enable(kbd) \ - (*kbdsw[(kbd)->kb_index]->enable)((kbd)) -#define kbdd_disable(kbd) \ - (*kbdsw[(kbd)->kb_index]->disable)((kbd)) -#define kbdd_read(kbd, wait) \ - (*kbdsw[(kbd)->kb_index]->read)((kbd), (wait)) -#define kbdd_check(kbd) \ - (*kbdsw[(kbd)->kb_index]->check)((kbd)) -#define kbdd_read_char(kbd, wait) \ - (*kbdsw[(kbd)->kb_index]->read_char)((kbd), (wait)) -#define kbdd_check_char(kbd) \ - (*kbdsw[(kbd)->kb_index]->check_char)((kbd)) -#define kbdd_ioctl(kbd, cmd, arg) \ - (((kbd) == NULL) ? \ - ENODEV : \ - (*kbdsw[(kbd)->kb_index]->ioctl)((kbd), (cmd), (arg))) -#define kbdd_lock(kbd, lockf) \ - (*kbdsw[(kbd)->kb_index]->lock)((kbd), (lockf)) -#define kbdd_clear_state(kbd) \ - (*kbdsw[(kbd)->kb_index]->clear_state)((kbd)) -#define kbdd_get_state(kbd, buf, len) \ - (*kbdsw[(kbd)->kb_index]->get_state)((kbd), (buf), (len)) -#define kbdd_set_state(kbd, buf, len) \ - (*kbdsw[(kbd)->kb_index]->set_state)((kbd), (buf), (len)) -#define kbdd_get_fkeystr(kbd, fkey, len) \ - (*kbdsw[(kbd)->kb_index]->get_fkeystr)((kbd), (fkey), (len)) -#define kbdd_poll(kbd, on) \ - (*kbdsw[(kbd)->kb_index]->poll)((kbd), (on)) -#define kbdd_diag(kbd, level) \ - (*kbdsw[(kbd)->kb_index]->diag)((kbd), (leve)) - /* keyboard driver */ typedef struct keyboard_driver { SLIST_ENTRY(keyboard_driver) link; @@ -215,14 +171,151 @@ typedef struct keyboard_driver { int (*configure)(int); /* backdoor for the console driver */ } keyboard_driver_t; +extern keyboard_switch_t **kbdsw; + +/* + * Keyboard disciplines: call actual handlers via kbdsw[]. + */ +static __inline int +kbdd_probe(keyboard_t *kbd, int unit, void *arg, int flags) +{ + + return ((*kbdsw[kbd->kb_index]->probe)(unit, arg, flags)); +} + +static __inline int +kbdd_init(keyboard_t *kbd, int unit, keyboard_t **kbdpp, void *arg, int flags) +{ + + return ((*kbdsw[kbd->kb_index]->init)(unit, kbdpp, arg, flags)); +} + +static __inline int +kbdd_term(keyboard_t *kbd) +{ + + return ((*kbdsw[kbd->kb_index]->term)(kbd)); +} + +static __inline int +kbdd_intr(keyboard_t *kbd, void *arg) +{ + + return ((*kbdsw[kbd->kb_index]->intr)(kbd, arg)); +} + +static __inline int +kbdd_test_if(keyboard_t *kbd) +{ + + return ((*kbdsw[kbd->kb_index]->test_if)(kbd)); +} + +static __inline int +kbdd_enable(keyboard_t *kbd) +{ + + return ((*kbdsw[kbd->kb_index]->enable)(kbd)); +} + +static __inline int +kbdd_disable(keyboard_t *kbd) +{ + + return ((*kbdsw[kbd->kb_index]->disable)(kbd)); +} + +static __inline int +kbdd_read(keyboard_t *kbd, int wait) +{ + + return ((*kbdsw[kbd->kb_index]->read)(kbd, wait)); +} + +static __inline int +kbdd_check(keyboard_t *kbd) +{ + + return ((*kbdsw[kbd->kb_index]->check)(kbd)); +} + +static __inline u_int +kbdd_read_char(keyboard_t *kbd, int wait) +{ + + return ((*kbdsw[kbd->kb_index]->read_char)(kbd, wait)); +} + +static __inline int +kbdd_check_char(keyboard_t *kbd) +{ + + return ((*kbdsw[kbd->kb_index]->check_char)(kbd)); +} + +static __inline int +kbdd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t data) +{ + + if (kbd == NULL) + return (ENODEV); + return ((*kbdsw[kbd->kb_index]->ioctl)(kbd, cmd, data)); +} + +static __inline int +kbdd_lock(keyboard_t *kbd, int lock) +{ + + return ((*kbdsw[kbd->kb_index]->lock)(kbd, lock)); +} + +static __inline void +kbdd_clear_state(keyboard_t *kbd) +{ + + (*kbdsw[kbd->kb_index]->clear_state)(kbd); +} + +static __inline int +kbdd_get_state(keyboard_t *kbd, void *buf, int len) +{ + + return ((*kbdsw[kbd->kb_index]->get_state)(kbd, buf, len)); +} + +static __inline int +kbdd_set_state(keyboard_t *kbd, void *buf, int len) +{ + + return ((*kbdsw[kbd->kb_index]->set_state)(kbd, buf, len)); +} + +static __inline u_char * +kbdd_get_fkeystr(keyboard_t *kbd, int fkey, size_t *len) +{ + + return ((*kbdsw[kbd->kb_index]->get_fkeystr)(kbd, fkey, len)); +} + +static __inline int +kbdd_poll(keyboard_t *kbd, int on) +{ + + return ((*kbdsw[kbd->kb_index]->poll)(kbd, on)); +} + +static __inline void +kbdd_diag(keyboard_t *kbd, int level) +{ + + (*kbdsw[kbd->kb_index]->diag)(kbd, level); +} + #define KEYBOARD_DRIVER(name, sw, config) \ static struct keyboard_driver name##_kbd_driver = { \ { NULL }, #name, &sw, config \ }; \ DATA_SET(kbddriver_set, name##_kbd_driver); - -/* global variables */ -extern keyboard_switch_t **kbdsw; /* functions for the keyboard driver */ int kbd_add_driver(keyboard_driver_t *driver);