PERFORCE change 97195 for review

Scott Long scottl at FreeBSD.org
Mon May 15 15:15:38 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=97195

Change 97195 by scottl at scottl-x64 on 2006/05/15 15:14:27

	Convert sim object to use a callout.  The old callout_handle was
	only initalized and never actually used, but it might be useful in
	the future.

Affected files ...

.. //depot/projects/scottl-camlock/src/sys/cam/cam_ccb.h#6 edit
.. //depot/projects/scottl-camlock/src/sys/cam/cam_sim.c#6 edit
.. //depot/projects/scottl-camlock/src/sys/cam/cam_sim.h#5 edit
.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#23 edit

Differences ...

==== //depot/projects/scottl-camlock/src/sys/cam/cam_ccb.h#6 (text+ko) ====


==== //depot/projects/scottl-camlock/src/sys/cam/cam_sim.c#6 (text+ko) ====

@@ -33,6 +33,8 @@
 #include <sys/systm.h>
 #include <sys/malloc.h>
 #include <sys/kernel.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
 
 #include <cam/cam.h>
 #include <cam/cam_ccb.h>
@@ -63,6 +65,9 @@
 {
 	struct cam_sim *sim;
 
+	if (mtx == NULL)
+		return (NULL);
+
 	sim = (struct cam_sim *)malloc(sizeof(struct cam_sim),
 	    M_CAMSIM, malloc_flags);
 
@@ -79,9 +84,15 @@
 	sim->max_tagged_dev_openings = max_tagged_dev_transactions;
 	sim->max_dev_openings = max_dev_transactions;
 	sim->flags = 0;
+	sim->devq = queue;
 	sim->mtx = mtx;
-	callout_handle_init(&sim->c_handle);
-	sim->devq = queue;
+	if (mtx == &Giant) {
+		sim->flags |= 0;
+		callout_init(&sim->callout, 0);
+	} else {
+		sim->flags |= CAM_SIM_MPSAFE;
+		callout_init(&sim->callout, 1);
+	}
 
 	return (sim);
 }

==== //depot/projects/scottl-camlock/src/sys/cam/cam_sim.h#5 (text+ko) ====

@@ -99,8 +99,9 @@
 	int			max_tagged_dev_openings;
 	int			max_dev_openings;
 	u_int32_t		flags;
-#define		CAM_SIM_REL_TIMEOUT_PENDING	0x01
-	struct callout_handle	c_handle;
+#define	CAM_SIM_REL_TIMEOUT_PENDING	0x01
+#define	CAM_SIM_MPSAFE			0x02
+	struct callout		callout;
 	struct cam_devq 	*devq;	/* Device Queue to use for this SIM */
 };
 

==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#23 (text+ko) ====

@@ -770,7 +770,7 @@
 static void	 xpt_run_dev_allocq(struct cam_eb *bus);
 static void	 xpt_run_dev_sendq(struct cam_eb *bus);
 static timeout_t xpt_release_devq_timeout;
-static timeout_t xpt_release_simq_timeout;
+static void	 xpt_release_simq_timeout(void *arg) __unused;
 static void	 xpt_release_bus(struct cam_eb *bus);
 static void	 xpt_release_devq_device(struct cam_ed *dev, u_int count,
 					 int run_queue);
@@ -4912,8 +4912,7 @@
 			 * already at 0.
 			 */
 			if ((sim->flags & CAM_SIM_REL_TIMEOUT_PENDING) != 0){
-				untimeout(xpt_release_simq_timeout, sim,
-					  sim->c_handle);
+				callout_stop(&sim->callout);
 				sim->flags &= ~CAM_SIM_REL_TIMEOUT_PENDING;
 			}
 			bus = xpt_find_bus(sim->path_id);
@@ -4932,6 +4931,9 @@
 		splx(s);
 }
 
+/*
+ * XXX Appears to be unused.
+ */
 static void
 xpt_release_simq_timeout(void *arg)
 {


More information about the p4-projects mailing list