Linux 内核模块间通信有什么好的方法?

今天遇到一个问题,要求当 LID 事件触发时,禁用了触摸板设备,并且在内核中实现此功能。现在内核里 Platform 驱动中可以接收到 LID 事件,而 Sentelic 驱动才可以控制设备启用或禁用。这就要求内核 Platform 驱动 和 Sentelic 驱动通信。目前我想到两个方法具体实现:

1. 比较简单的实现方法是在 Sentelic 驱动中导出所需求的方法,然后在 Platform 中调用这些方法。这样虽然简单,但是让我感觉到这两个模块之间的耦合变大了,感觉有点怪怪的,还需要解决依赖关系问题。

2. 使用内核通知器,当 Platform 驱动收到 LID 事件时通过内核提供的方法向内核报告此事件,Sentelic 关注此类事件,并作出正确的响应。这个方法也有一个不好的地方,Sentelic 并不一定都需要作这类动作,因为只有 Sentelic 和这个特定的 Platform 组合时才有这样的需求。

这个问题应该如何解决才能比较好呢?给些建议吧。

Over!