Module Name: src
Committed By: pgoyette
Date: Tue Aug 2 14:06:15 UTC 2011
Modified Files:
src/sys/dev/i2c: dbcool.c dbcool_var.h
Log Message:
When detaching the device, tear down its sysctl tree.
To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/dev/i2c/dbcool.c
cvs rdiff -u -r1.13 -r1.14 src/sys/dev/i2c/dbcool_var.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/i2c/dbcool.c
diff -u src/sys/dev/i2c/dbcool.c:1.32 src/sys/dev/i2c/dbcool.c:1.33
--- src/sys/dev/i2c/dbcool.c:1.32 Mon Aug 1 22:42:57 2011
+++ src/sys/dev/i2c/dbcool.c Tue Aug 2 14:06:15 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: dbcool.c,v 1.32 2011/08/01 22:42:57 macallan Exp $ */
+/* $NetBSD: dbcool.c,v 1.33 2011/08/02 14:06:15 pgoyette Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -50,7 +50,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dbcool.c,v 1.32 2011/08/01 22:42:57 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dbcool.c,v 1.33 2011/08/02 14:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -98,6 +98,7 @@
sysmon_envsys_lim_t *, uint32_t *);
/* SYSCTL Helpers */
+SYSCTL_SETUP_PROTO(sysctl_dbcoolsetup);
static int sysctl_dbcool_temp(SYSCTLFN_PROTO);
static int sysctl_adm1030_temp(SYSCTLFN_PROTO);
static int sysctl_adm1030_trange(SYSCTLFN_PROTO);
@@ -784,6 +785,12 @@
aprint_normal_dev(self, "%s dBCool(tm) Controller "
"(rev 0x%04x)\n", sc->sc_dc.dc_chip->name, ver);
+ sc->sc_sysctl_log = NULL;
+
+#ifdef _MODULE
+ sysctl_dbcoolsetup(&sc->sc_sysctl_log);
+#endif
+
dbcool_setup(self);
if (!pmf_device_register(self, dbcool_pmf_suspend, dbcool_pmf_resume))
@@ -798,6 +805,9 @@
pmf_device_deregister(self);
sysmon_envsys_unregister(sc->sc_sme);
+
+ sysctl_teardown(&sc->sc_sysctl_log);
+
sc->sc_sme = NULL;
return 0;
}
@@ -1104,7 +1114,7 @@
SYSCTL_SETUP(sysctl_dbcoolsetup, "sysctl dBCool subtree setup")
{
- sysctl_createv(NULL, 0, NULL, NULL,
+ sysctl_createv(clog, 0, NULL, NULL,
CTLFLAG_PERMANENT,
CTLTYPE_NODE, "hw", NULL,
NULL, 0, NULL, 0,
@@ -1504,7 +1514,7 @@
/* Determine Vcc for this chip */
sc->sc_supply_voltage = dbcool_supply_voltage(sc);
- ret = sysctl_createv(NULL, 0, NULL, &me,
+ ret = sysctl_createv(&sc->sc_sysctl_log, 0, NULL, &me,
CTLFLAG_READWRITE,
CTLTYPE_NODE, device_xname(self), NULL,
NULL, 0, NULL, 0,
@@ -1531,7 +1541,7 @@
dbcool_setup_controllers(sc);
#ifdef DBCOOL_DEBUG
- ret = sysctl_createv(NULL, 0, NULL,
+ ret = sysctl_createv(&sc->sc_sysctl_log, 0, NULL,
(const struct sysctlnode **)&node,
CTLFLAG_READWRITE, CTLTYPE_INT, "reg_select", NULL,
sysctl_dbcool_reg_select,
@@ -1540,7 +1550,7 @@
if (node != NULL)
node->sysctl_data = sc;
- ret = sysctl_createv(NULL, 0, NULL,
+ ret = sysctl_createv(&sc->sc_sysctl_log, 0, NULL,
(const struct sysctlnode **)&node,
CTLFLAG_READWRITE, CTLTYPE_INT, "reg_access", NULL,
sysctl_dbcool_reg_access,
@@ -1704,7 +1714,8 @@
/* create sysctl node for the sensor if not one already there */
if (sc->sc_sysctl_num[j] == -1) {
- ret = sysctl_createv(NULL, 0, NULL, &me2, CTLFLAG_READWRITE,
+ ret = sysctl_createv(&sc->sc_sysctl_log, 0, NULL, &me2,
+ CTLFLAG_READWRITE,
CTLTYPE_NODE, sc->sc_sensor[j].desc, NULL,
NULL, 0, NULL, 0,
CTL_HW, sc->sc_root_sysctl_num, CTL_CREATE,
@@ -1722,9 +1733,7 @@
rw_flag = CTLFLAG_READONLY | CTLFLAG_OWNDESC;
else
rw_flag = CTLFLAG_READWRITE | CTLFLAG_OWNDESC;
-
- ret = sysctl_createv(NULL, 0, NULL,
- &node, rw_flag,
+ ret = sysctl_createv(&sc->sc_sysctl_log, 0, NULL, &node, rw_flag,
CTLTYPE_INT, name,
SYSCTL_DESCR(dbc_sysctl_table[sysctl_index].desc),
dbc_sysctl_table[sysctl_index].helper,
@@ -1748,7 +1757,7 @@
for (i = 0; chip->power[i].desc != NULL; i++) {
snprintf(name, sizeof(name), "fan_ctl_%d", i);
- ret = sysctl_createv(NULL, 0, NULL, &me2,
+ ret = sysctl_createv(&sc->sc_sysctl_log, 0, NULL, &me2,
CTLFLAG_READWRITE | CTLFLAG_OWNDESC,
CTLTYPE_NODE, name, NULL,
NULL, 0, NULL, 0,
@@ -1766,7 +1775,7 @@
rw_flag = CTLFLAG_READONLY | CTLFLAG_OWNDESC;
else
rw_flag = CTLFLAG_READWRITE | CTLFLAG_OWNDESC;
- ret = sysctl_createv(NULL, 0, NULL,
+ ret = sysctl_createv(&sc->sc_sysctl_log, 0, NULL,
&node, rw_flag,
(j == DBC_PWM_BEHAVIOR)?
CTLTYPE_STRING:CTLTYPE_INT,
Index: src/sys/dev/i2c/dbcool_var.h
diff -u src/sys/dev/i2c/dbcool_var.h:1.13 src/sys/dev/i2c/dbcool_var.h:1.14
--- src/sys/dev/i2c/dbcool_var.h:1.13 Fri Mar 11 17:12:43 2011
+++ src/sys/dev/i2c/dbcool_var.h Tue Aug 2 14:06:15 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: dbcool_var.h,v 1.13 2011/03/11 17:12:43 pgoyette Exp $ */
+/* $NetBSD: dbcool_var.h,v 1.14 2011/08/02 14:06:15 pgoyette Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -41,7 +41,7 @@
#endif
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dbcool_var.h,v 1.13 2011/03/11 17:12:43 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dbcool_var.h,v 1.14 2011/08/02 14:06:15 pgoyette Exp $");
#include <dev/i2c/i2cvar.h>
@@ -128,6 +128,7 @@
int sc_temp_offset;
int64_t sc_supply_voltage;
bool sc_suspend;
+ struct sysctllog *sc_sysctl_log;
#ifdef DBCOOL_DEBUG
uint8_t sc_user_reg;
#endif