amian81125
驱动牛犊
驱动牛犊
  • 注册日期2003-04-09
  • 最后登录2004-08-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1678回复:7

请教版主――模块的按需加载

楼主#
更多 发布于:2003-08-08 10:01
    这个问题已经困扰我很长时间了,现在老板就蹲在我身旁要结果,只好求助于版主了,还请版主可怜可怜。
    现在我已经完成了驱动程序,老板还要求实现驱动的自动加载。尽管我也实现了在系统启动时加载驱动,但老板还是不满足(一位兄弟说用户的需求是无限的),非要我实现驱动模块的按需加载。我对模块的按需加载不是很清楚,LDD上有这么一章,但我感觉模块的请求加载(request_modules())是运行在核心态的。那么对驱动模块来说应该在什么时侯由谁加载。是由用户程序吗?如何加载;要么由系统在检测到硬件时加载,由该如何做?



    为什么郁闷的总是我!!!
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-09 22:36
模块加载有2种,一种是在系统启动时,由启动脚本文件启动。相当于dos的批处理。
另一种是在运行时,用户加入模块。
两种情况都是模块在内核之外。都由insmod完成。

还可把模块编译为内核的一部分。启动内核时,自动加载了驱动。而不用客户进行任何处理。
方法是在驱动的init函数前加__。

驱动都写了,还郁闷啥,呵呵。
amian81125
驱动牛犊
驱动牛犊
  • 注册日期2003-04-09
  • 最后登录2004-08-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-12 18:10
救星呀,unix1998:
   能不能将用户加入模块的方法写详细一些,小弟先跪谢了,哈哈.
   下次给你再加分.
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-12 23:03
打那么多字很辛苦的,呵呵。
上次说的还不详细啊?
那本ldd其实很详细。
拥护对于没有加入内河的模块,只要insmod命令
amian81125
驱动牛犊
驱动牛犊
  • 注册日期2003-04-09
  • 最后登录2004-08-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-13 08:57
老大是这个意思呀!这是手动加载嘛。
现在小弟想做的是自动按需加载,即在用户应用程序里加载,LDD中确实有按需加载的概念,但却是在内核下通过request_module()函数实现。小弟该如何做才能在用户应用程序里实现加载。
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-13 10:21
一个简单的办法是exec调用。
参数是你的insmod命令
amian81125
驱动牛犊
驱动牛犊
  • 注册日期2003-04-09
  • 最后登录2004-08-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-08-13 17:42
老大你好:
    我试过exec了。我在应用程序里加了一句:
execl(\"/sbin/insmod\",\"insmod\",\"driver.o\".NULL);
运行后驱动程序能被加载,但有一个问题是程序运行完这一句后就自动退出,不执行下面的任何语句,系统也不提示任何错误,驱动程序也能正常工作。这是为什么呀?
amian81125
驱动牛犊
驱动牛犊
  • 注册日期2003-04-09
  • 最后登录2004-08-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-08-14 10:26
谢谢老大!小弟的问题终于搞的了。上次是因为没有考虑到进程同步的问题,导致程序有点错误。现在搞定了,哈哈!!!
  
   现在我不郁闷了!!!
游客

返回顶部