1、如果 kill 的时候,应用进程刚好持有驱动函数锁,会导致驱动函数的锁被删除掉,导致驱动函数信号量被意外释放。
2、之上问题引入的新问题,我们可以在驱动锁创建的时候使用 API_SemaphorexCreate 的时候,第3个option参数设置 LW_OPTION_OBJECT_GLOBAL 为全局熟悉,可以避免驱动锁不会被用户的应用进程杀死而导致的驱动程序创建的锁被意外释放。
3、按照步骤2操作,又会产生一个新的问题,如果驱动中的驱动接口是 sempend ---> do something ----> sempost 逻辑的时候,而此时应用进程在调用驱动接口的时候,运行到do something的时候被kill杀死,那么信号量不会被意外删除,但是信号量确也没有释放的过程了,后续会导致其他进程调用该驱动接口导致信号量卡死问题出现。