PATCH src/share/examples/kld/cdev/module

Chuck Tuffli chuck_tuffli at agilent.com
Fri Mar 18 12:37:16 PST 2005


In trying to figure out what was going on with my driver, I ported the
character device example to work with DFly.

-- 
Chuck Tuffli
Agilent Technologies
? cdev_module.patch
Index: cdev.c
===================================================================
RCS file: /home/dcvs/src/share/examples/kld/cdev/module/cdev.c,v
retrieving revision 1.2
diff -u -r1.2 cdev.c
--- cdev.c	17 Jun 2003 04:36:57 -0000	1.2
+++ cdev.c	18 Mar 2005 19:52:06 -0000
@@ -69,12 +69,12 @@
  * $DragonFly: src/share/examples/kld/cdev/module/cdev.c,v 1.1 2003/06/16 05:27:37 dillon Exp $
  */
 #include <sys/types.h>
-#include <sys/uio.h>
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/ioccom.h>
 #include <sys/systm.h>
 #include <sys/conf.h>
+#include <sys/uio.h>
 
 #include "cdev.h"
 
@@ -100,30 +100,30 @@
 static int len;
 
 int
-mydev_open(dev_t dev, int flag, int otyp, struct proc *procp)
+mydev_open(dev_t dev, int flag, int otyp, d_thread_t *td)
 {
-    printf("mydev_open: dev_t=%d, flag=%x, otyp=%x, procp=%p\n",
-	   dev2udev(dev), flag, otyp, procp);
+    printf("mydev_open: dev_t=%d, flag=%x, otyp=%x, td=%p\n",
+	   dev2udev(dev), flag, otyp, td);
     memset(&buf, '\0', 513);
     len = 0;
     return (0);
 }
 
 int
-mydev_close(dev_t dev, int flag, int otyp, struct proc *procp)
+mydev_close(dev_t dev, int flag, int otyp, d_thread_t *td)
 {
-    printf("mydev_close: dev_t=%d, flag=%x, otyp=%x, procp=%p\n",
-	      dev2udev(dev), flag, otyp, procp);
+    printf("mydev_close: dev_t=%d, flag=%x, otyp=%x, td=%p\n",
+	      dev2udev(dev), flag, otyp, td);
     return (0);
 }
 
 int
-mydev_ioctl(dev_t dev, u_long cmd, caddr_t arg, int mode, struct proc *procp)
+mydev_ioctl(dev_t dev, u_long cmd, caddr_t arg, int mode, d_thread_t *td)
 {
     int error = 0;
 
-    printf("mydev_ioctl: dev_t=%d, cmd=%lx, arg=%p, mode=%x procp=%p\n",
-	   dev2udev(dev), cmd, arg, mode, procp);
+    printf("mydev_ioctl: dev_t=%d, cmd=%lx, arg=%p, mode=%x td=%p\n",
+	   dev2udev(dev), cmd, arg, mode, td);
 
     switch(cmd) {
     case CDEV_IOCTL1:
Index: cdevmod.c
===================================================================
RCS file: /home/dcvs/src/share/examples/kld/cdev/module/cdevmod.c,v
retrieving revision 1.2
diff -u -r1.2 cdevmod.c
--- cdevmod.c	17 Jun 2003 04:36:57 -0000	1.2
+++ cdevmod.c	18 Mar 2005 19:52:06 -0000
@@ -79,6 +79,12 @@
 #define CDEV_MAJOR 32
 
 static struct cdevsw my_devsw = {
+	/* name */	"cdev",
+	/* maj */	CDEV_MAJOR,
+	/* flags */	D_TTY,
+	/* port */	NULL,
+	/* clone */	NULL,
+
 	/* open */	mydev_open,
 	/* close */	mydev_close,
 	/* read */	mydev_read,
@@ -87,11 +93,8 @@
 	/* poll */	nopoll,
 	/* mmap */	nommap,
 	/* strategy */	nostrategy,
-	/* name */	"cdev",
-	/* maj */	CDEV_MAJOR,
 	/* dump */	nodump,
 	/* psize */	nopsize,
-	/* flags */	D_TTY,
 	/* bmaj */	-1
 };
 
@@ -128,12 +131,13 @@
 	printf("Copyright (c) 1998\n");
 	printf("Rajesh Vaidheeswarran\n");
 	printf("All rights reserved\n");
+	cdevsw_add(&my_devsw, 0, 0);
 	sdev = make_dev(&my_devsw, 0, UID_ROOT, GID_WHEEL, 0600, "cdev");
 	break;		/* Success*/
 
     case MOD_UNLOAD:
 	printf("Unloaded kld character device driver\n");
-	destroy_dev(sdev);
+	cdevsw_remove(&my_devsw, 0, 0);
 	break;		/* Success*/
 
     default:	/* we only understand load/unload*/




More information about the Submit mailing list