首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不带init和exit函数的Linux内核模块

不带init和exit函数的Linux内核模块
EN

Stack Overflow用户
提问于 2018-01-23 21:46:27
回答 1查看 741关注 0票数 2

我已经编写了一个带有init和exit函数的基本linux内核模块。

然后尝试在不使用init函数的情况下编译LKM,它被成功编译并插入到内核中。然后使用rmmod删除相同的,它被删除,并在dmesg中获得打印,我已经将其放入exit函数中。

不带exit函数的模块和带init函数的模块遵循相同的过程。它已成功插入,但当我试图删除它时,显示错误“无法删除模块:设备或资源忙”。

不能理解上面没有初始化函数的behavior.Why模块可以正常工作,而没有退出函数的模块则不能正常工作。有人能解释一下吗?

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2018-01-23 22:08:46

内核中有一个检查(/

/module.c通过delete_module syscall),如果你的模块中有一个module_init函数,那么它必须有严格的退出函数才能卸载,如果没有-EBUSY返回。

这个检查是因为,它假设您已经在init函数中分配了一些资源,并且您必须在exit函数中释放它们!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48403284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档