字符设备中断处理问题
各位好,本人基于ARM —— FPGA —— 串口写了一个Linux驱动程序,详细内容如下:
FPGA接收串口数据,只要接收到数据就拉高连接ARM的中断线,
ARM的中断线是高电平触发,用中断触发方式接收数据,我写了一个字符驱动程序,
在read函数中interruptible_sleep_on(&wq)阻塞读取,
在中断服务程序中读出FPGA的寄存器中的数据放入字符数组buffer中,
然后wake_up_interruptible(&wq)唤醒等待队列,让用户的read读出数据,现在问题出来了,串口发出的数据量很大,
字符数组buffer一次放不下,我让中断到达字符数组buffer大小就退出中断,让用户程序把数据读走,
可中断出来之后,用户没来得及读数据又发生中断了,造成数据丢失。
我如何保证用户把数据读走再处理中断,请给一个简单示例或者说说原理,不胜感激!