| Can someone please update the examples in /usr/share/examples/kld?
|
| It's a bit confusing when it doesn't even compile.
i just submitted a patch to get the kld/cdev module to compile
(and work too ;). i tested this on a -stable box.. but it
should still work for -current.
i used the vn device as an example since i'm still learning
how KLDs work.
see patch below or at:
http://www.barmetta.com/freebsd/examples-kld-cdev.patch
...bryan
--
[EMAIL PROTECTED]
-----8<-----
diff -rc cdev-old/module/cdevmod.c cdev/module/cdevmod.c
*** cdev-old/module/cdevmod.c Thu Mar 30 21:19:48 2000
--- cdev/module/cdevmod.c Thu Mar 30 21:17:15 2000
***************
*** 81,99 ****
/* read */ noread,
/* write */ nowrite,
/* ioctl */ mydev_ioctl,
- /* stop */ nostop,
- /* reset */ noreset,
- /* devtotty */ nodevtotty,
/* poll */ nopoll,
/* mmap */ nommap,
/* strategy */ nostrategy,
/* name */ "cdev",
- /* parms */ noparms,
/* maj */ CDEV_MAJOR,
/* dump */ nodump,
/* psize */ nopsize,
/* flags */ D_TTY,
- /* maxio */ 0,
/* bmaj */ -1
};
--- 81,94 ----
***************
*** 109,115 ****
*/
static int
! cdev_load(module_t mod, int cmd, void *arg)
{
int err = 0;
--- 104,110 ----
*/
static int
! cdev_modevent(module_t mod, int cmd, void *arg)
{
int err = 0;
***************
*** 117,122 ****
--- 112,119 ----
case MOD_LOAD:
/* Do any initialization that you should do with the kernel */
+ cdevsw_add(&my_devsw);
+ make_dev(&my_devsw, 0, UID_ROOT, GID_OPERATOR, 0644, "%s", "cdev");
/* if we make it to here, print copyright on console*/
printf("\nSample Loaded kld character device driver\n");
***************
*** 126,135 ****
break; /* Success*/
case MOD_UNLOAD:
printf("Unloaded kld character device driver\n");
break; /* Success*/
! default: /* we only understand load/unload*/
err = EINVAL;
break;
}
--- 123,136 ----
break; /* Success*/
case MOD_UNLOAD:
+ /* fall through */
+ case MOD_SHUTDOWN:
+ cdevsw_remove(&my_devsw);
+
printf("Unloaded kld character device driver\n");
break; /* Success*/
! default:
err = EINVAL;
break;
}
***************
*** 139,142 ****
/* Now declare the module to the system */
! DEV_MODULE(cdev, CDEV_MAJOR, -1, my_devsw, cdev_load, 0);
--- 140,143 ----
/* Now declare the module to the system */
! DEV_MODULE(cdev, cdev_modevent, NULL);
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message