Module Name:    src
Committed By:   pooka
Date:           Sun Jan 31 15:10:12 UTC 2010

Modified Files:
        src/sys/conf: files
        src/sys/kern: subr_autoconf.c
Added Files:
        src/sys/kern: subr_device.c

Log Message:
Device accessors are only marginally related to autoconf, so put them
into subr_device.c instead of having them in subr_autoconf.c.

Since none of the copyrights in subr_autoconf.c really match the
history of device accessors, I took the liberty of slapping (c)
2006 TNF onto subr_device.c.


To generate a diff of this commit:
cvs rdiff -u -r1.973 -r1.974 src/sys/conf/files
cvs rdiff -u -r1.199 -r1.200 src/sys/kern/subr_autoconf.c
cvs rdiff -u -r0 -r1.2 src/sys/kern/subr_device.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/conf/files
diff -u src/sys/conf/files:1.973 src/sys/conf/files:1.974
--- src/sys/conf/files:1.973	Sun Jan 31 01:38:48 2010
+++ src/sys/conf/files	Sun Jan 31 15:10:11 2010
@@ -1,4 +1,4 @@
-#	$NetBSD: files,v 1.973 2010/01/31 01:38:48 pooka Exp $
+#	$NetBSD: files,v 1.974 2010/01/31 15:10:11 pooka Exp $
 #	@(#)files.newconf	7.5 (Berkeley) 5/10/93
 
 version 	20090313
@@ -1479,6 +1479,7 @@
 file	kern/subr_callback.c
 file	kern/subr_copy.c
 file	kern/subr_debug.c		debug
+file	kern/subr_device.c
 file	kern/subr_devsw.c
 file	kern/subr_disk.c
 file	kern/subr_disk_open.c

Index: src/sys/kern/subr_autoconf.c
diff -u src/sys/kern/subr_autoconf.c:1.199 src/sys/kern/subr_autoconf.c:1.200
--- src/sys/kern/subr_autoconf.c:1.199	Tue Jan 19 21:54:53 2010
+++ src/sys/kern/subr_autoconf.c	Sun Jan 31 15:10:12 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: subr_autoconf.c,v 1.199 2010/01/19 21:54:53 dyoung Exp $ */
+/* $NetBSD: subr_autoconf.c,v 1.200 2010/01/31 15:10:12 pooka Exp $ */
 
 /*
  * Copyright (c) 1996, 2000 Christopher G. Demetriou
@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_autoconf.c,v 1.199 2010/01/19 21:54:53 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_autoconf.c,v 1.200 2010/01/31 15:10:12 pooka Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ddb.h"
@@ -1938,150 +1938,6 @@
 }
 
 /*
- * Accessor functions for the device_t type.
- */
-devclass_t
-device_class(device_t dev)
-{
-
-	return dev->dv_class;
-}
-
-cfdata_t
-device_cfdata(device_t dev)
-{
-
-	return dev->dv_cfdata;
-}
-
-cfdriver_t
-device_cfdriver(device_t dev)
-{
-
-	return dev->dv_cfdriver;
-}
-
-cfattach_t
-device_cfattach(device_t dev)
-{
-
-	return dev->dv_cfattach;
-}
-
-int
-device_unit(device_t dev)
-{
-
-	return dev->dv_unit;
-}
-
-const char *
-device_xname(device_t dev)
-{
-
-	return dev->dv_xname;
-}
-
-device_t
-device_parent(device_t dev)
-{
-
-	return dev->dv_parent;
-}
-
-bool
-device_activation(device_t dev, devact_level_t level)
-{
-	int active_flags;
-
-	active_flags = DVF_ACTIVE;
-	switch (level) {
-	case DEVACT_LEVEL_FULL:
-		active_flags |= DVF_CLASS_SUSPENDED;
-		/*FALLTHROUGH*/
-	case DEVACT_LEVEL_DRIVER:
-		active_flags |= DVF_DRIVER_SUSPENDED;
-		/*FALLTHROUGH*/
-	case DEVACT_LEVEL_BUS:
-		active_flags |= DVF_BUS_SUSPENDED;
-		break;
-	}
-
-	return (dev->dv_flags & active_flags) == DVF_ACTIVE;
-}
-
-bool
-device_is_active(device_t dev)
-{
-	int active_flags;
-
-	active_flags = DVF_ACTIVE;
-	active_flags |= DVF_CLASS_SUSPENDED;
-	active_flags |= DVF_DRIVER_SUSPENDED;
-	active_flags |= DVF_BUS_SUSPENDED;
-
-	return (dev->dv_flags & active_flags) == DVF_ACTIVE;
-}
-
-bool
-device_is_enabled(device_t dev)
-{
-	return (dev->dv_flags & DVF_ACTIVE) == DVF_ACTIVE;
-}
-
-bool
-device_has_power(device_t dev)
-{
-	int active_flags;
-
-	active_flags = DVF_ACTIVE | DVF_BUS_SUSPENDED;
-
-	return (dev->dv_flags & active_flags) == DVF_ACTIVE;
-}
-
-int
-device_locator(device_t dev, u_int locnum)
-{
-
-	KASSERT(dev->dv_locators != NULL);
-	return dev->dv_locators[locnum];
-}
-
-void *
-device_private(device_t dev)
-{
-
-	/*
-	 * The reason why device_private(NULL) is allowed is to simplify the
-	 * work of a lot of userspace request handlers (i.e., c/bdev
-	 * handlers) which grab cfdriver_t->cd_units[n].
-	 * It avoids having them test for it to be NULL and only then calling
-	 * device_private.
-	 */
-	return dev == NULL ? NULL : dev->dv_private;
-}
-
-prop_dictionary_t
-device_properties(device_t dev)
-{
-
-	return dev->dv_properties;
-}
-
-/*
- * device_is_a:
- *
- *	Returns true if the device is an instance of the specified
- *	driver.
- */
-bool
-device_is_a(device_t dev, const char *dname)
-{
-
-	return strcmp(dev->dv_cfdriver->cd_name, dname) == 0;
-}
-
-/*
  * device_find_by_xname:
  *
  *	Returns the device of the given name or NULL if it doesn't exist.

Added files:

Index: src/sys/kern/subr_device.c
diff -u /dev/null src/sys/kern/subr_device.c:1.2
--- /dev/null	Sun Jan 31 15:10:12 2010
+++ src/sys/kern/subr_device.c	Sun Jan 31 15:10:12 2010
@@ -0,0 +1,178 @@
+/*	$NetBSD: subr_device.c,v 1.2 2010/01/31 15:10:12 pooka Exp $	*/
+
+/*
+ * Copyright (c) 2006 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: subr_device.c,v 1.2 2010/01/31 15:10:12 pooka Exp $");
+
+#include <sys/param.h>
+#include <sys/device.h>
+#include <sys/systm.h>
+
+/*
+ * Accessor functions for the device_t type.
+ */
+devclass_t
+device_class(device_t dev)
+{
+
+	return dev->dv_class;
+}
+
+cfdata_t
+device_cfdata(device_t dev)
+{
+
+	return dev->dv_cfdata;
+}
+
+cfdriver_t
+device_cfdriver(device_t dev)
+{
+
+	return dev->dv_cfdriver;
+}
+
+cfattach_t
+device_cfattach(device_t dev)
+{
+
+	return dev->dv_cfattach;
+}
+
+int
+device_unit(device_t dev)
+{
+
+	return dev->dv_unit;
+}
+
+const char *
+device_xname(device_t dev)
+{
+
+	return dev->dv_xname;
+}
+
+device_t
+device_parent(device_t dev)
+{
+
+	return dev->dv_parent;
+}
+
+bool
+device_activation(device_t dev, devact_level_t level)
+{
+	int active_flags;
+
+	active_flags = DVF_ACTIVE;
+	switch (level) {
+	case DEVACT_LEVEL_FULL:
+		active_flags |= DVF_CLASS_SUSPENDED;
+		/*FALLTHROUGH*/
+	case DEVACT_LEVEL_DRIVER:
+		active_flags |= DVF_DRIVER_SUSPENDED;
+		/*FALLTHROUGH*/
+	case DEVACT_LEVEL_BUS:
+		active_flags |= DVF_BUS_SUSPENDED;
+		break;
+	}
+
+	return (dev->dv_flags & active_flags) == DVF_ACTIVE;
+}
+
+bool
+device_is_active(device_t dev)
+{
+	int active_flags;
+
+	active_flags = DVF_ACTIVE;
+	active_flags |= DVF_CLASS_SUSPENDED;
+	active_flags |= DVF_DRIVER_SUSPENDED;
+	active_flags |= DVF_BUS_SUSPENDED;
+
+	return (dev->dv_flags & active_flags) == DVF_ACTIVE;
+}
+
+bool
+device_is_enabled(device_t dev)
+{
+	return (dev->dv_flags & DVF_ACTIVE) == DVF_ACTIVE;
+}
+
+bool
+device_has_power(device_t dev)
+{
+	int active_flags;
+
+	active_flags = DVF_ACTIVE | DVF_BUS_SUSPENDED;
+
+	return (dev->dv_flags & active_flags) == DVF_ACTIVE;
+}
+
+int
+device_locator(device_t dev, u_int locnum)
+{
+
+	KASSERT(dev->dv_locators != NULL);
+	return dev->dv_locators[locnum];
+}
+
+void *
+device_private(device_t dev)
+{
+
+	/*
+	 * The reason why device_private(NULL) is allowed is to simplify the
+	 * work of a lot of userspace request handlers (i.e., c/bdev
+	 * handlers) which grab cfdriver_t->cd_units[n].
+	 * It avoids having them test for it to be NULL and only then calling
+	 * device_private.
+	 */
+	return dev == NULL ? NULL : dev->dv_private;
+}
+
+prop_dictionary_t
+device_properties(device_t dev)
+{
+
+	return dev->dv_properties;
+}
+
+/*
+ * device_is_a:
+ *
+ *	Returns true if the device is an instance of the specified
+ *	driver.
+ */
+bool
+device_is_a(device_t dev, const char *dname)
+{
+
+	return strcmp(dev->dv_cfdriver->cd_name, dname) == 0;
+}

Reply via email to