1 /* $NetBSD: sysmon.c,v 1.5 2001/11/13 06:28:55 lukem Exp $ */ 2 3 /*- 4 * Copyright (c) 2000 Zembu Labs, Inc. 5 * All rights reserved. 6 * 7 * Author: Jason R. Thorpe <thorpej@zembu.com> 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 3. All advertising materials mentioning features or use of this software 18 * must display the following acknowledgement: 19 * This product includes software developed by Zembu Labs, Inc. 20 * 4. Neither the name of Zembu Labs nor the names of its employees may 21 * be used to endorse or promote products derived from this software 22 * without specific prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY ZEMBU LABS, INC. ``AS IS'' AND ANY EXPRESS 25 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WAR- 26 * RANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS- 27 * CLAIMED. IN NO EVENT SHALL ZEMBU LABS BE LIABLE FOR ANY DIRECT, INDIRECT, 28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 29 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 */ 35 36 /* 37 * Clearing house for system monitoring hardware. We currently 38 * handle environmental sensors and watchdog timers. 39 */ 40 41 #include <sys/cdefs.h> 42 __KERNEL_RCSID(0, "$NetBSD: sysmon.c,v 1.5 2001/11/13 06:28:55 lukem Exp $"); 43 44 #include <sys/param.h> 45 #include <sys/conf.h> 46 #include <sys/errno.h> 47 #include <sys/fcntl.h> 48 #include <sys/lock.h> 49 #include <sys/callout.h> 50 #include <sys/kernel.h> 51 #include <sys/systm.h> 52 #include <sys/proc.h> 53 54 #include <dev/sysmon/sysmonvar.h> 55 #include <dev/sysmon/sysmonconf.h> 56 57 cdev_decl(sysmon); 58 59 /* 60 * sysmonopen: 61 * 62 * Open the system monitor device. 63 */ 64 int 65 sysmonopen(dev_t dev, int flag, int mode, struct proc *p) 66 { 67 int error; 68 69 switch (minor(dev)) { 70 #if NSYSMON_ENVSYS > 0 71 case SYSMON_MINOR_ENVSYS: 72 error = sysmonopen_envsys(dev, flag, mode, p); 73 break; 74 #endif 75 #if NSYSMON_WDOG > 0 76 case SYSMON_MINOR_WDOG: 77 error = sysmonopen_wdog(dev, flag, mode, p); 78 break; 79 #endif 80 default: 81 error = ENODEV; 82 } 83 84 return (error); 85 } 86 87 /* 88 * sysmonclose: 89 * 90 * Close the system monitor device. 91 */ 92 int 93 sysmonclose(dev_t dev, int flag, int mode, struct proc *p) 94 { 95 int error; 96 97 switch (minor(dev)) { 98 #if NSYSMON_ENVSYS > 0 99 case SYSMON_MINOR_ENVSYS: 100 error = sysmonclose_envsys(dev, flag, mode, p); 101 break; 102 #endif 103 #if NSYSMON_WDOG > 0 104 case SYSMON_MINOR_WDOG: 105 error = sysmonclose_wdog(dev, flag, mode, p); 106 break; 107 #endif 108 default: 109 error = ENODEV; 110 } 111 112 return (error); 113 } 114 115 /* 116 * sysmonioctl: 117 * 118 * Perform a control request. 119 */ 120 int 121 sysmonioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p) 122 { 123 int error; 124 125 switch (minor(dev)) { 126 #if NSYSMON_ENVSYS > 0 127 case SYSMON_MINOR_ENVSYS: 128 error = sysmonioctl_envsys(dev, cmd, data, flag, p); 129 break; 130 #endif 131 #if NSYSMON_WDOG > 0 132 case SYSMON_MINOR_WDOG: 133 error = sysmonioctl_wdog(dev, cmd, data, flag, p); 134 break; 135 #endif 136 default: 137 error = ENODEV; 138 } 139 140 return (error); 141 } 142