svn commit: r197165 - in head/sys: kern sys

Attilio Rao attilio at FreeBSD.org
Sun Sep 13 15:08:20 UTC 2009


Author: attilio
Date: Sun Sep 13 15:08:19 2009
New Revision: 197165
URL: http://svn.freebsd.org/changeset/base/197165

Log:
  Revert r196779 in order to implement a different scheme for newbus locking
  methodology.
  
  Requested by:	imp

Modified:
  head/sys/kern/subr_bus.c
  head/sys/sys/bus.h

Modified: head/sys/kern/subr_bus.c
==============================================================================
--- head/sys/kern/subr_bus.c	Sun Sep 13 14:47:31 2009	(r197164)
+++ head/sys/kern/subr_bus.c	Sun Sep 13 15:08:19 2009	(r197165)
@@ -2625,16 +2625,10 @@ device_attach(device_t dev)
 {
 	int error;
 
-	if (dev->state >= DS_ATTACHING)
-		return (0);
 	device_sysctl_init(dev);
 	if (!device_is_quiet(dev))
 		device_print_child(dev->parent, dev);
-	dev->state = DS_ATTACHING;
 	if ((error = DEVICE_ATTACH(dev)) != 0) {
-		KASSERT(dev->state == DS_ATTACHING,
-		    ("%s: %p device state must not been changing", __func__,
-		    dev));
 		printf("device_attach: %s%d attach returned %d\n",
 		    dev->driver->name, dev->unit, error);
 		/* Unset the class; set in device_probe_child */
@@ -2645,8 +2639,6 @@ device_attach(device_t dev)
 		dev->state = DS_NOTPRESENT;
 		return (error);
 	}
-	KASSERT(dev->state == DS_ATTACHING,
-	    ("%s: %p device state must not been changing", __func__, dev));
 	device_sysctl_update(dev);
 	dev->state = DS_ATTACHED;
 	devadded(dev);
@@ -2682,16 +2674,8 @@ device_detach(device_t dev)
 	if (dev->state != DS_ATTACHED)
 		return (0);
 
-	dev->state = DS_DETACHING;
-	if ((error = DEVICE_DETACH(dev)) != 0) {
-		KASSERT(dev->state == DS_DETACHING,
-		    ("%s: %p device state must not been changing", __func__,
-		    dev));
-		dev->state = DS_ATTACHED;
+	if ((error = DEVICE_DETACH(dev)) != 0)
 		return (error);
-	}
-	KASSERT(dev->state == DS_DETACHING,
-	    ("%s: %p device state must not been changing", __func__, dev));
 	devremoved(dev);
 	if (!device_is_quiet(dev))
 		device_printf(dev, "detached\n");
@@ -2746,7 +2730,7 @@ device_quiesce(device_t dev)
 int
 device_shutdown(device_t dev)
 {
-	if (dev->state < DS_ATTACHED || dev->state == DS_DETACHING)
+	if (dev->state < DS_ATTACHED)
 		return (0);
 	return (DEVICE_SHUTDOWN(dev));
 }

Modified: head/sys/sys/bus.h
==============================================================================
--- head/sys/sys/bus.h	Sun Sep 13 14:47:31 2009	(r197164)
+++ head/sys/sys/bus.h	Sun Sep 13 15:08:19 2009	(r197165)
@@ -52,11 +52,8 @@ struct u_businfo {
 typedef enum device_state {
 	DS_NOTPRESENT,			/**< @brief not probed or probe failed */
 	DS_ALIVE,			/**< @brief probe succeeded */
-	DS_ATTACHING,			/**< @brief attaching is in progress */
 	DS_ATTACHED,			/**< @brief attach method called */
-	DS_BUSY,			/**< @brief device is open */
-	DS_DETACHING			/**< @brief detaching is in progress */
-
+	DS_BUSY				/**< @brief device is open */
 } device_state_t;
 
 /**


More information about the svn-src-head mailing list