PERFORCE change 142560 for review

John Birrell jb at FreeBSD.org
Fri May 30 04:16:19 UTC 2008


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

Change 142560 by jb at freebsd3 on 2008/05/30 04:15:23

	IF7

Affected files ...

.. //depot/projects/dtrace7/src/sys/kern/kern_conf.c#5 integrate

Differences ...

==== //depot/projects/dtrace7/src/sys/kern/kern_conf.c#5 (text+ko) ====

@@ -25,11 +25,12 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_conf.c,v 1.208.2.3 2008/04/05 04:18:29 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_conf.c,v 1.208.2.4 2008/05/28 15:41:16 kib Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
 #include <sys/systm.h>
+#include <sys/bus.h>
 #include <sys/bio.h>
 #include <sys/lock.h>
 #include <sys/mutex.h>
@@ -526,6 +527,37 @@
 	return ((unit & 0xff) | ((unit << 8) & ~0xffff));
 }
 
+static void
+notify(struct cdev *dev, const char *ev)
+{
+	static const char prefix[] = "cdev=";
+	char *data;
+	int namelen;
+
+	if (cold)
+		return;
+	namelen = strlen(dev->si_name);
+	data = malloc(namelen + sizeof(prefix), M_TEMP, M_WAITOK);
+	memcpy(data, prefix, sizeof(prefix) - 1);
+	memcpy(data + sizeof(prefix) - 1, dev->si_name, namelen + 1);
+	devctl_notify("DEVFS", "CDEV", ev, data);
+	free(data, M_TEMP);
+}
+
+static void
+notify_create(struct cdev *dev)
+{
+
+	notify(dev, "CREATE");
+}
+
+static void
+notify_destroy(struct cdev *dev)
+{
+
+	notify(dev, "DESTROY");
+}
+
 static struct cdev *
 newdev(struct cdevsw *csw, int y, struct cdev *si)
 {
@@ -706,6 +738,9 @@
 	devfs_create(dev);
 	clean_unrhdrl(devfs_inos);
 	dev_unlock_and_free();
+
+	notify_create(dev);
+
 	return (dev);
 }
 
@@ -794,6 +829,9 @@
 	clean_unrhdrl(devfs_inos);
 	dev_unlock();
 	dev_depends(pdev, dev);
+
+	notify_create(dev);
+
 	return (dev);
 }
 
@@ -842,6 +880,10 @@
 		msleep(&csw, &devmtx, PRIBIO, "devdrn", hz / 10);
 	}
 
+	mtx_unlock(&devmtx);
+	notify_destroy(dev);
+	mtx_lock(&devmtx);
+
 	dev->si_drv1 = 0;
 	dev->si_drv2 = 0;
 	bzero(&dev->__si_u, sizeof(dev->__si_u));


More information about the p4-projects mailing list