Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/acpi Rework the sysctl-support.
details: https://anonhg.NetBSD.org/src/rev/b2a2d9ab40c1
branches: trunk
changeset: 753839:b2a2d9ab40c1
user: jruoho <jruoho%NetBSD.org@localhost>
date: Mon Apr 12 12:14:26 2010 +0000
description:
Rework the sysctl-support.
Changes:
hw.wake -> hw.acpi.wake
hw.acpi.debug_layer -> hw.acpi.debug.layer
hw.acpi.debug_level -> hw.acpi.debug.level
Additions:
hw.acpi.stat.gpe # Number of dispatched GPEs
hw.acpi.stat.sci # Number of SCI interrupts
hw.acpi.stat.fixed # Number of fixed events
hw.acpi.stat.method # Number of executed methods
ok jmcneill@
diffstat:
sys/dev/acpi/acpi.c | 141 ++++++++++++++++++++++++++++++++-----------
sys/dev/acpi/acpi_debug.c | 44 ++++++++-----
sys/dev/acpi/acpi_wakedev.c | 73 +++++++++++++---------
sys/dev/acpi/acpivar.h | 14 +---
4 files changed, 177 insertions(+), 95 deletions(-)
diffs (truncated from 456 to 300 lines):
diff -r ad42a13cb3f7 -r b2a2d9ab40c1 sys/dev/acpi/acpi.c
--- a/sys/dev/acpi/acpi.c Mon Apr 12 12:04:54 2010 +0000
+++ b/sys/dev/acpi/acpi.c Mon Apr 12 12:14:26 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi.c,v 1.164 2010/04/08 04:40:51 jruoho Exp $ */
+/* $NetBSD: acpi.c,v 1.165 2010/04/12 12:14:26 jruoho Exp $ */
/*-
* Copyright (c) 2003, 2007 The NetBSD Foundation, Inc.
@@ -70,7 +70,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi.c,v 1.164 2010/04/08 04:40:51 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi.c,v 1.165 2010/04/12 12:14:26 jruoho Exp $");
#include "opt_acpi.h"
#include "opt_pcifixup.h"
@@ -133,6 +133,7 @@
static int acpi_print(void *aux, const char *);
+static int sysctl_hw_acpi_fixedstats(SYSCTLFN_ARGS);
static int sysctl_hw_acpi_sleepstate(SYSCTLFN_ARGS);
extern struct cfdriver acpi_cd;
@@ -1736,63 +1737,131 @@
SYSCTL_SETUP(sysctl_acpi_setup, "sysctl hw.acpi subtree setup")
{
- const struct sysctlnode *node;
- const struct sysctlnode *ssnode;
+ const struct sysctlnode *mnode, *rnode;
+ int err;
- if (sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT,
- CTLTYPE_NODE, "hw", NULL,
- NULL, 0, NULL, 0,
- CTL_HW, CTL_EOL) != 0)
+ err = sysctl_createv(clog, 0, NULL, &rnode,
+ CTLFLAG_PERMANENT, CTLTYPE_NODE, "hw",
+ NULL, NULL, 0, NULL, 0,
+ CTL_HW, CTL_EOL);
+
+ if (err != 0)
return;
- if (sysctl_createv(clog, 0, NULL, &node,
- CTLFLAG_PERMANENT,
- CTLTYPE_NODE, "acpi", NULL,
+ err = sysctl_createv(clog, 0, &rnode, &rnode,
+ CTLFLAG_PERMANENT, CTLTYPE_NODE,
+ "acpi", SYSCTL_DESCR("ACPI subsystem parameters"),
NULL, 0, NULL, 0,
- CTL_HW, CTL_CREATE, CTL_EOL) != 0)
+ CTL_CREATE, CTL_EOL);
+
+ if (err != 0)
return;
- sysctl_createv(NULL, 0, NULL, NULL, CTLFLAG_READONLY,
- CTLTYPE_QUAD, "root",
- SYSCTL_DESCR("ACPI root pointer"),
+ (void)sysctl_createv(NULL, 0, &rnode, NULL,
+ CTLFLAG_PERMANENT | CTLFLAG_READONLY, CTLTYPE_QUAD,
+ "root", SYSCTL_DESCR("ACPI root pointer"),
NULL, 0, &acpi_root_pointer, sizeof(acpi_root_pointer),
- CTL_HW, node->sysctl_num, CTL_CREATE, CTL_EOL);
- sysctl_createv(NULL, 0, NULL, NULL, CTLFLAG_READONLY,
- CTLTYPE_STRING, "supported_states",
- SYSCTL_DESCR("Supported ACPI system states"),
+ CTL_CREATE, CTL_EOL);
+
+ (void)sysctl_createv(NULL, 0, &rnode, NULL,
+ CTLFLAG_PERMANENT | CTLFLAG_READONLY, CTLTYPE_STRING,
+ "supported_states", SYSCTL_DESCR("Supported system states"),
NULL, 0, acpi_supported_states, 0,
- CTL_HW, node->sysctl_num, CTL_CREATE, CTL_EOL);
+ CTL_CREATE, CTL_EOL);
+
+ err = sysctl_createv(NULL, 0, NULL, &mnode,
+ CTLFLAG_PERMANENT, CTLTYPE_NODE, "machdep",
+ NULL, NULL, 0, NULL, 0,
+ CTL_MACHDEP, CTL_EOL);
+
+ if (err == 0) {
+
+ (void)sysctl_createv(NULL, 0, &mnode, NULL,
+ CTLFLAG_PERMANENT | CTLFLAG_READWRITE, CTLTYPE_INT,
+ "sleep_state", SYSCTL_DESCR("System sleep state"),
+ sysctl_hw_acpi_sleepstate, 0, NULL, 0,
+ CTL_CREATE, CTL_EOL);
+ }
+
+ err = sysctl_createv(clog, 0, &rnode, &rnode,
+ CTLFLAG_PERMANENT, CTLTYPE_NODE,
+ "stat", SYSCTL_DESCR("ACPI statistics"),
+ NULL, 0, NULL, 0,
+ CTL_CREATE, CTL_EOL);
+
+ if (err != 0)
+ return;
+
+ (void)sysctl_createv(clog, 0, &rnode, NULL,
+ CTLFLAG_PERMANENT | CTLFLAG_READONLY, CTLTYPE_QUAD,
+ "gpe", SYSCTL_DESCR("Number of dispatched GPEs"),
+ NULL, 0, &AcpiGpeCount, sizeof(AcpiGpeCount),
+ CTL_CREATE, CTL_EOL);
- /* ACPI sleepstate sysctl */
- if (sysctl_createv(NULL, 0, NULL, &node,
- CTLFLAG_PERMANENT,
- CTLTYPE_NODE, "machdep", NULL,
- NULL, 0, NULL, 0, CTL_MACHDEP, CTL_EOL) != 0)
- return;
- if (sysctl_createv(NULL, 0, &node, &ssnode,
- CTLFLAG_READWRITE, CTLTYPE_INT, "sleep_state",
- NULL, sysctl_hw_acpi_sleepstate, 0, NULL, 0, CTL_CREATE,
- CTL_EOL) != 0)
- return;
+ (void)sysctl_createv(clog, 0, &rnode, NULL,
+ CTLFLAG_PERMANENT | CTLFLAG_READONLY, CTLTYPE_QUAD,
+ "sci", SYSCTL_DESCR("Number of SCI interrupts"),
+ NULL, 0, &AcpiSciCount, sizeof(AcpiSciCount),
+ CTL_CREATE, CTL_EOL);
+
+ (void)sysctl_createv(clog, 0, &rnode, NULL,
+ CTLFLAG_PERMANENT | CTLFLAG_READONLY, CTLTYPE_QUAD,
+ "fixed", SYSCTL_DESCR("Number of fixed events"),
+ sysctl_hw_acpi_fixedstats, 0, NULL, 0,
+ CTL_CREATE, CTL_EOL);
+
+ (void)sysctl_createv(clog, 0, &rnode, NULL,
+ CTLFLAG_PERMANENT | CTLFLAG_READONLY, CTLTYPE_QUAD,
+ "method", SYSCTL_DESCR("Number of methods executed"),
+ NULL, 0, &AcpiMethodCount, sizeof(AcpiMethodCount),
+ CTL_CREATE, CTL_EOL);
+
+ CTASSERT(sizeof(AcpiGpeCount) == sizeof(uint64_t));
+ CTASSERT(sizeof(AcpiSciCount) == sizeof(uint64_t));
+}
+
+static int
+sysctl_hw_acpi_fixedstats(SYSCTLFN_ARGS)
+{
+ struct sysctlnode node;
+ uint64_t t;
+ int err, i;
+
+ for (i = t = 0; i < __arraycount(AcpiFixedEventCount); i++)
+ t += AcpiFixedEventCount[i];
+
+ node = *rnode;
+ node.sysctl_data = &t;
+
+ err = sysctl_lookup(SYSCTLFN_CALL(&node));
+
+ if (err || newp == NULL)
+ return err;
+
+ return 0;
}
static int
sysctl_hw_acpi_sleepstate(SYSCTLFN_ARGS)
{
- int error, t;
struct sysctlnode node;
+ int err, t;
node = *rnode;
t = acpi_sleepstate;
node.sysctl_data = &t;
- error = sysctl_lookup(SYSCTLFN_CALL(&node));
- if (error || newp == NULL)
- return error;
+
+ err = sysctl_lookup(SYSCTLFN_CALL(&node));
+
+ if (err || newp == NULL)
+ return err;
if (acpi_softc == NULL)
return ENOSYS;
+ if (t < ACPI_STATE_S0 || t > ACPI_STATE_S5)
+ return EINVAL;
+
acpi_enter_sleep_state(acpi_softc, t);
return 0;
diff -r ad42a13cb3f7 -r b2a2d9ab40c1 sys/dev/acpi/acpi_debug.c
--- a/sys/dev/acpi/acpi_debug.c Mon Apr 12 12:04:54 2010 +0000
+++ b/sys/dev/acpi/acpi_debug.c Mon Apr 12 12:14:26 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_debug.c,v 1.1 2010/01/31 11:26:20 jruoho Exp $ */
+/* $NetBSD: acpi_debug.c,v 1.2 2010/04/12 12:14:26 jruoho Exp $ */
/*-
* Copyright (c) 2010 Jukka Ruohonen <jruohonen%iki.fi@localhost>
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_debug.c,v 1.1 2010/01/31 11:26:20 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_debug.c,v 1.2 2010/04/12 12:14:26 jruoho Exp $");
#include <sys/param.h>
#include <sys/sysctl.h>
@@ -65,9 +65,8 @@
void
acpi_debug_init(void)
{
- const struct sysctlnode *node;
- const char *layer;
- const char *level;
+ const struct sysctlnode *rnode;
+ const char *layer, *level;
int rv;
KASSERT(acpi_debug_layer_d == NULL);
@@ -78,34 +77,45 @@
if (rv != 0)
goto fail;
- rv = sysctl_createv(NULL, 0, NULL, NULL,
+ rv = sysctl_createv(NULL, 0, NULL, &rnode,
CTLFLAG_PERMANENT, CTLTYPE_NODE, "hw",
- NULL, NULL, 0, NULL, 0, CTL_HW, CTL_EOL);
+ NULL, NULL, 0, NULL, 0,
+ CTL_HW, CTL_EOL);
if (rv != 0)
goto fail;
- rv = sysctl_createv(NULL, 0, NULL, &node,
+ rv = sysctl_createv(NULL, 0, &rnode, &rnode,
CTLFLAG_PERMANENT, CTLTYPE_NODE, "acpi",
- NULL, NULL, 0, NULL, 0, CTL_HW, CTL_CREATE, CTL_EOL);
+ NULL, NULL, 0, NULL, 0,
+ CTL_CREATE, CTL_EOL);
if (rv != 0)
goto fail;
- rv = sysctl_createv(NULL, 0, NULL, NULL,
- CTLFLAG_READWRITE, CTLTYPE_STRING, "debug_layer",
- SYSCTL_DESCR("ACPI debug layer"),
- acpi_debug_sysctl_layer, 0, acpi_debug_layer_s, ACPI_DEBUG_MAX,
- CTL_HW, node->sysctl_num, CTL_CREATE, CTL_EOL);
+ rv = sysctl_createv(NULL, 0, &rnode, &rnode,
+ 0, CTLTYPE_NODE, "debug",
+ SYSCTL_DESCR("ACPI debug subtree"),
+ NULL, 0, NULL, 0,
+ CTL_CREATE, CTL_EOL);
if (rv != 0)
goto fail;
- rv = sysctl_createv(NULL, 0, NULL, NULL,
- CTLFLAG_READWRITE, CTLTYPE_STRING, "debug_level",
+ rv = sysctl_createv(NULL, 0, &rnode, NULL,
+ CTLFLAG_READWRITE, CTLTYPE_STRING, "layer",
+ SYSCTL_DESCR("ACPI debug layer"),
+ acpi_debug_sysctl_layer, 0, acpi_debug_layer_s, ACPI_DEBUG_MAX,
+ CTL_CREATE, CTL_EOL);
+
+ if (rv != 0)
+ goto fail;
+
+ rv = sysctl_createv(NULL, 0, &rnode, NULL,
+ CTLFLAG_READWRITE, CTLTYPE_STRING, "level",
SYSCTL_DESCR("ACPI debug level"),
acpi_debug_sysctl_level, 0, acpi_debug_level_s, ACPI_DEBUG_MAX,
- CTL_HW, node->sysctl_num, CTL_CREATE, CTL_EOL);
+ CTL_CREATE, CTL_EOL);
if (rv != 0)
goto fail;
diff -r ad42a13cb3f7 -r b2a2d9ab40c1 sys/dev/acpi/acpi_wakedev.c
--- a/sys/dev/acpi/acpi_wakedev.c Mon Apr 12 12:04:54 2010 +0000
+++ b/sys/dev/acpi/acpi_wakedev.c Mon Apr 12 12:14:26 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_wakedev.c,v 1.8 2010/03/16 07:18:55 jruoho Exp $ */
+/* $NetBSD: acpi_wakedev.c,v 1.9 2010/04/12 12:14:26 jruoho Exp $ */
/*-
* Copyright (c) 2009 Jared D. McNeill <jmcneill%invisible.ca@localhost>
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_wakedev.c,v 1.8 2010/03/16 07:18:55 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_wakedev.c,v 1.9 2010/04/12 12:14:26 jruoho Exp $");
#include <sys/param.h>
#include <sys/device.h>
@@ -41,8 +41,6 @@
#define _COMPONENT ACPI_BUS_COMPONENT
Home |
Main Index |
Thread Index |
Old Index