Date: Mon, 2 Dec 1996 12:42:24 -0800 From: "Jin Guojun[ITG]" <jin@george.lbl.gov> To: bugs@freebsd.org Cc: hackers@freebsd.org Subject: LKM issues Message-ID: <199612022042.MAA28760@george.lbl.gov>
next in thread | raw e-mail | index | archive | help
I remember that someone said that the LKM does not work for character device, but the message seems not saying why. I traced the code and found one problem: (1) _lkm_dev(lkmtp, cmd) did not do any thing for LM_DT_CHAR, switch(cmd) { case LKM_E_LOAD: /* don't load twice! */ if (lkmexists(lkmtp)) return(EEXIST); switch(args->lkm_devtype) { ... case LM_DT_CHAR: break; ... so that unload a loaded character device driver will crash at (!!!): case LKM_E_UNLOAD: /* current slot... */ i = args->lkm_offset; switch(args->lkm_devtype) { ... case LM_DT_CHAR: /* replace current slot contents with old contents */ !!! cdevsw_add(&descrip, args->lkm_olddev.cdev,NULL); break; ... } ----------------------------------------------- A separated question: Should a loadable network driver use MOD_MISC(name)? It seems there is a LM_STRMOD slot, but no MOD_STR(...) exists. Should the MOD_STR() be used for network driver ? or will it be used for something else? Thanks, -Jin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199612022042.MAA28760>