通过try_module_get 来检测需要的ko是否已经insmod了
来源:互联网 发布:apache kylin使用教程 编辑:程序博客网 时间:2024/05/17 00:53
通过try_module_get 可以判断需要的ko是否已经加载并处于工作状态,这里的参数struct module *module就是后面的THIS_MODULE
static inline int try_module_get(struct module *module)
{
return !module || module_is_live(module);
}
可以通过module_is_live 判断这个ko是否存在
static inline int module_is_live(struct module *mod)
{
return mod->state != MODULE_STATE_GOING;
}
module的状态如下:
enum module_state {
MODULE_STATE_LIVE, /* Normal state. */
MODULE_STATE_COMING, /* Full formed, running module_init. */
MODULE_STATE_GOING, /* Going away. */
MODULE_STATE_UNFORMED, /* Still setting it up. */
};
我们注册的使用模块的owner就是THIS_MODULE
#define mdiobus_register(bus) __mdiobus_register(bus, THIS_MODULE)
int __mdiobus_register(struct mii_bus *bus, struct module *owner)
{
struct mdio_device *mdiodev;
int i, err;
if (NULL == bus || NULL == bus->name ||
NULL == bus->read || NULL == bus->write)
return -EINVAL;
BUG_ON(bus->state != MDIOBUS_ALLOCATED &&
bus->state != MDIOBUS_UNREGISTERED);
bus->owner = owner;
bus->dev.parent = bus->parent;
bus->dev.class = &mdio_bus_class;
bus->dev.groups = NULL;
dev_set_name(&bus->dev, "%s", bus->id);
}
static inline int try_module_get(struct module *module)
{
return !module || module_is_live(module);
}
可以通过module_is_live 判断这个ko是否存在
static inline int module_is_live(struct module *mod)
{
return mod->state != MODULE_STATE_GOING;
}
module的状态如下:
enum module_state {
MODULE_STATE_LIVE, /* Normal state. */
MODULE_STATE_COMING, /* Full formed, running module_init. */
MODULE_STATE_GOING, /* Going away. */
MODULE_STATE_UNFORMED, /* Still setting it up. */
};
我们注册的使用模块的owner就是THIS_MODULE
#define mdiobus_register(bus) __mdiobus_register(bus, THIS_MODULE)
int __mdiobus_register(struct mii_bus *bus, struct module *owner)
{
struct mdio_device *mdiodev;
int i, err;
if (NULL == bus || NULL == bus->name ||
NULL == bus->read || NULL == bus->write)
return -EINVAL;
BUG_ON(bus->state != MDIOBUS_ALLOCATED &&
bus->state != MDIOBUS_UNREGISTERED);
bus->owner = owner;
bus->dev.parent = bus->parent;
bus->dev.class = &mdio_bus_class;
bus->dev.groups = NULL;
dev_set_name(&bus->dev, "%s", bus->id);
}
阅读全文
0 0
- 通过try_module_get 来检测需要的ko是否已经insmod了
- 通过dmesg | tail 看insmod ko时输出的log
- 如何检测系统是否已经运行了相同的程序。
- 检测系统是否已经运行了相同的程序
- 如何检测系统是否已经运行了相同的程序
- 利用AJAX来检测用户名是否已经被注册
- 一段检测当前进程是否已经在运行了的代码,非常实用!
- 通过序列化来判断一个对象是否已经更改
- C++检测系统是否已经安装了.NET Framework
- 代码检测vc2013环境是否已经安装了
- insmod ko时出现的错误--设备名称
- 重复insmod 一个ko模块导致的异常问题解决方法
- 嵌入式linux 内核模块调试ko的 insmod问题
- 通过define _CRTDBG_MAP_ALLOC宏来检测windows上的code是否有内存泄露
- 通过session来设置登录主界面时,通过过滤器filter判断是否已经登录过,如果已经登陆过可以直接访问主界面,如果没有,需要重新登陆
- linux insmod error ko文件
- 通过定时器来定时检测是否存在U盘
- vc++通过执行特权指令来检测是否是虚拟机
- CSDN评论中插入链接
- 在线云评测系统日志(十):获取输入文件的评测数据进行程序评测
- 使用Cropper进行图片剪裁上传
- c++获取文件的时间毫秒
- GC——CMS收集器
- 通过try_module_get 来检测需要的ko是否已经insmod了
- Android 在同一台手机上同时安装测试包和正式包
- XCTest断言
- Spartan6系列之芯片配置模式详解
- 递归算法
- POI导出word设置页面大小及边距
- javaweb学习总结——Filter(过滤器)常见应用
- [算法题]输出斐波那契数列的第N项
- 删除和添加标签属性之prop和attr