c - 如何确保只有一个 C 内核模块实例正在运行(单例)?
问题描述
对于我的任务,我需要为我的内核模块确定合适的设计模式。由于它修改了内核代码的一个关键区域,因此我不能允许它运行多个实例 - 修改后的代码可能会被用作原始代码,并且无法将系统恢复到其初始状态在 module_exit 上。考虑到这一点,我选择了 Singleton 设计模式等。现在我需要实际实施限制,它随之而来 - 程序需要保证当时只有一个实例处于活动状态。
这是内核模块的常见做法吗?我没看到有人讨论过这个。如果是这样,我该如何实施限制?
解决方案
与其说是正在运行的模块实例的数量,不如说是正在运行的多个线程正在执行同一模块。
避免冲突的一种方法是“锁定”一个互斥体,从而阻止所有其他在代码的某个关键部分尝试执行相同代码的线程,然后“解锁”该互斥体,从而使另一个线程能够执行相同的代码.
推荐阅读
- python - 如何正确从 CSV 中导入空行字典?
- kubernetes - Kubernetes:如何配置 hostnetwork pod IP 地址?
- angular - 405 Method Not Allowed 和“CORS header 'Access-Control-Allow-Origin' missing”虽然 tcpdump 说它正在被发送出去
- hibernate - 获取对给定年份有效的记录的 Spring 数据(具有 fromDate、toDate 字段)
- javascript - 如何在 JavaScript 中将邻接矩阵转换为邻接表?
- eclipse-plugin - 检查函数是否为虚函数
- java - 如何在 http://jqueryui.com 中为 RadioButton 场景使用相对 Xpath 定位元素
- laravel - 意外数据发现碳?
- jmeter - Jmeter sshmon 插件:检查条件并中断测试
- javascript - 访问 $scope 的属性时出现问题