阅读:1934回复:2
FreeBSD的驱动请教
FreeBSD发源于UNIX,请教一下,在卸载驱动的时候是要调用驱动中的哪个例程?
我看到系统自带的一些声卡驱动源码里都是在xxx_detach例程里释放xxx_attach例程中请求分配的资源,可是该什么时候又该怎样调用这个xxx_detach例程呢?? 请教请教 |
|
沙发#
发布于:2001-11-28 10:45
First,do unregister_driver(*ops) in cleanup_module().
/*struct driver_operations ops ={ \"...\", attach, ...,detach};*/ You must realize the detach function. When you run rmmod command,the OS will call cleanup_module(),then do detach process. |
|
板凳#
发布于:2001-11-28 16:13
首先谢谢你.但是,FreeBSD没有cleanup_module例程,它卸载时用的是kldunload命令.所以还是不清楚detach例程的调用方法及何时调用.
定义如下: static device_method_t xxx_methods[] = { /* Device interface */ DEVMETHOD(device_probe, xxx_probe), DEVMETHOD(device_attach, xxx_attach), DEVMETHOD(device_detach, xxx_detach), ...... { 0, 0 } }; 在kldload时,OS会调用xxx_probe和xxx_attach,但在kldunload时,OS却没有调用xxx_detach. 请问原因.谢谢. |
|