PERFORCE change 124794 for review

Constantine A. Murenin cnst at FreeBSD.org
Mon Aug 6 19:41:33 PDT 2007


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

Change 124794 by cnst at dale on 2007/08/07 02:40:31

	change sensor_find(9) to make the framework slightly more efficient
	and better prepared for some future locking.  This also saves a few
	bytes in kern_sensors.o.

Affected files ...

.. //depot/projects/soc2007/cnst-sensors/sys.kern/kern_sensors.c#8 edit

Differences ...

==== //depot/projects/soc2007/cnst-sensors/sys.kern/kern_sensors.c#8 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$P4: //depot/projects/soc2007/cnst-sensors/sys.kern/kern_sensors.c#7 $	*/
+/*	$P4: //depot/projects/soc2007/cnst-sensors/sys.kern/kern_sensors.c#8 $	*/
 /*	$FreeBSD$	*/
 /*	$OpenBSD: kern_sensors.c,v 1.19 2007/06/04 18:42:05 deraadt Exp $	*/
 /*	$OpenBSD: kern_sysctl.c,v 1.154 2007/06/01 17:29:10 beck Exp $	*/
@@ -39,7 +39,7 @@
 SLIST_HEAD(, ksensordev) sensordev_list = SLIST_HEAD_INITIALIZER(sensordev_list);
 
 struct ksensordev	*sensordev_get(int);
-struct ksensor		*sensor_find(int, enum sensor_type, int);
+struct ksensor		*sensor_find(struct ksensordev *, enum sensor_type, int);
 
 struct sensor_task {
 	void				*arg;
@@ -156,16 +156,11 @@
 }
 
 struct ksensor *
-sensor_find(int dev, enum sensor_type type, int numt)
+sensor_find(struct ksensordev *sensdev, enum sensor_type type, int numt)
 {
 	struct ksensor *s;
-	struct ksensordev *sensdev;
 	struct ksensors_head *sh;
 
-	sensdev = sensordev_get(dev);
-	if (sensdev == NULL)
-		return (NULL);
-
 	sh = &sensdev->sensors_list;
 	SLIST_FOREACH(s, sh, list)
 		if (s->type == type && s->numt == numt)
@@ -315,11 +310,12 @@
 		return (ENOTDIR);
 
 	dev = name[0];
+
+	ksd = sensordev_get(dev);
+	if (ksd == NULL)
+		return (ENOENT);
+
 	if (namelen == 1) {
-		ksd = sensordev_get(dev);
-		if (ksd == NULL)
-			return (ENOENT);
-
 		/* Grab a copy, to clear the kernel pointers */
 		usd = malloc(sizeof(*usd), M_TEMP, M_WAITOK);
 		bzero(usd, sizeof(*usd));
@@ -338,7 +334,7 @@
 	type = name[1];
 	numt = name[2];
 
-	ks = sensor_find(dev, type, numt);
+	ks = sensor_find(ksd, type, numt);
 	if (ks == NULL)
 		return (ENOENT);
 


More information about the p4-projects mailing list