老师好,
想问一下字符设备驱动是不是同时只能用一个用户态进程去打开?
我用最简单的按键驱动试了下,单个app去打开设备没啥问题,但两个app同时去打开就会出现一个app能读,另一个app读不到值。请问多进程的情况下,驱动要怎么处理呢?
比如这个read函数,使用休眠唤醒的方法来读取数据。要怎么做到能让多进程读?
我自己思考了一下,觉得内核应该有机制能将中断产生这个事件发送给所有阻塞在read函数的用户态app,但不清楚怎么实现。
老师好,
想问一下字符设备驱动是不是同时只能用一个用户态进程去打开?
我用最简单的按键驱动试了下,单个app去打开设备没啥问题,但两个app同时去打开就会出现一个app能读,另一个app读不到值。请问多进程的情况下,驱动要怎么处理呢?
我自己思考了一下,觉得内核应该有机制能将中断产生这个事件发送给所有阻塞在read函数的用户态app,但不清楚怎么实现。
就我所知:
看了一下代码,感觉是 wait_event_interruptible(gpio_key_wait, g_key); 这个唤醒函数中的 condition 的问题;也就是 g_key = 0; 导致另一个 app 无法唤醒的问题;