From owner-svn-src-all@FreeBSD.ORG Sat Oct 31 10:38:30 2009 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 E85371065676; Sat, 31 Oct 2009 10:38:30 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BE4CF8FC19; Sat, 31 Oct 2009 10:38:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n9VAcUaC083172; Sat, 31 Oct 2009 10:38:30 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n9VAcU3h083170; Sat, 31 Oct 2009 10:38:30 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <200910311038.n9VAcU3h083170@svn.freebsd.org> From: Ed Schouten Date: Sat, 31 Oct 2009 10:38:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r198707 - head/sys/i386/bios 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, 31 Oct 2009 10:38:31 -0000 Author: ed Date: Sat Oct 31 10:38:30 2009 New Revision: 198707 URL: http://svn.freebsd.org/changeset/base/198707 Log: Unobfuscate unit number handling in apm(4). There is no need to use the lower 4 bits of the unit number to store the device type number. Just use 0 and 1 to distinguish them. devfs also guarantees that there can never be an open call on a device that has a unit number different to 0 and 1, so there is no need to check for this in open(). Modified: head/sys/i386/bios/apm.c Modified: head/sys/i386/bios/apm.c ============================================================================== --- head/sys/i386/bios/apm.c Sat Oct 31 10:35:41 2009 (r198706) +++ head/sys/i386/bios/apm.c Sat Oct 31 10:38:30 2009 (r198707) @@ -79,9 +79,8 @@ int apm_evindex; #define SCFLAG_OCTL 0x0000002 #define SCFLAG_OPEN (SCFLAG_ONORMAL|SCFLAG_OCTL) -#define APMDEV(dev) (dev2unit(dev)&0x0f) #define APMDEV_NORMAL 0 -#define APMDEV_CTL 8 +#define APMDEV_CTL 1 #ifdef PC98 extern int bios32_apm98(struct bios_regs *, u_int, u_short); @@ -1249,8 +1248,10 @@ apm_attach(device_t dev) sc->suspending = 0; sc->running = 0; - make_dev(&apm_cdevsw, 0, 0, 5, 0664, "apm"); - make_dev(&apm_cdevsw, 8, 0, 5, 0660, "apmctl"); + make_dev(&apm_cdevsw, APMDEV_NORMAL, + UID_ROOT, GID_OPERATOR, 0664, "apm"); + make_dev(&apm_cdevsw, APMDEV_CTL, + UID_ROOT, GID_OPERATOR, 0660, "apmctl"); return 0; } @@ -1258,12 +1259,11 @@ static int apmopen(struct cdev *dev, int flag, int fmt, struct thread *td) { struct apm_softc *sc = &apm_softc; - int ctl = APMDEV(dev); if (sc == NULL || sc->initialized == 0) return (ENXIO); - switch (ctl) { + switch (dev2unit(dev)) { case APMDEV_CTL: if (!(flag & FWRITE)) return EINVAL; @@ -1275,9 +1275,6 @@ apmopen(struct cdev *dev, int flag, int case APMDEV_NORMAL: sc->sc_flags |= SCFLAG_ONORMAL; break; - default: - return ENXIO; - break; } return 0; } @@ -1286,9 +1283,8 @@ static int apmclose(struct cdev *dev, int flag, int fmt, struct thread *td) { struct apm_softc *sc = &apm_softc; - int ctl = APMDEV(dev); - switch (ctl) { + switch (dev2unit(dev)) { case APMDEV_CTL: apm_lastreq_rejected(); sc->sc_flags &= ~SCFLAG_OCTL; @@ -1429,7 +1425,7 @@ apmioctl(struct cdev *dev, u_long cmd, c } /* for /dev/apmctl */ - if (APMDEV(dev) == APMDEV_CTL) { + if (dev2unit(dev) == APMDEV_CTL) { struct apm_event_info *evp; int i; @@ -1468,7 +1464,7 @@ apmwrite(struct cdev *dev, struct uio *u int error; u_char enabled; - if (APMDEV(dev) != APMDEV_CTL) + if (dev2unit(dev) != APMDEV_CTL) return(ENODEV); if (uio->uio_resid != sizeof(u_int)) return(E2BIG);