conch
驱动牛犊
驱动牛犊
  • 注册日期2001-05-17
  • 最后登录2007-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1934回复:2

FreeBSD的驱动请教

楼主#
更多 发布于:2001-11-28 10:17
FreeBSD发源于UNIX,请教一下,在卸载驱动的时候是要调用驱动中的哪个例程?
我看到系统自带的一些声卡驱动源码里都是在xxx_detach例程里释放xxx_attach例程中请求分配的资源,可是该什么时候又该怎样调用这个xxx_detach例程呢??
请教请教
Levis75
驱动小牛
驱动小牛
  • 注册日期2001-08-06
  • 最后登录2006-06-28
  • 粉丝0
  • 关注0
  • 积分68分
  • 威望7点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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.
conch
驱动牛犊
驱动牛犊
  • 注册日期2001-05-17
  • 最后登录2007-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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. 请问原因.谢谢.
游客

返回顶部