阅读:1311回复:0
请问lingzjl和各位大侠,flip_buffer的问题
我在做一个usb转串口的驱动,我的usb设备在使用时应该是:用户发命令,然后用户读设备的响应信息;因此,用户程序在处理使的顺序应该是:write(),read()。
现在,我在驱动中将用户write()来的命令转发给了我的usb设备,问题出在read()的身上,对linux串口通讯熟悉的朋友应该了解在这方面的机制,我也只是似懂非懂,这里要用到flip_buffer,我必须采用中断(或其它?)方式将设备的响应读出,然后放到flip_buffer中去,使用下面这段代码: for(i=0;i<data_size;++i) { if(tty->flip.count >= TTY_FLIPBUF_SIZE) tty_flip_buffer_push(tty); tty_insert_flip_char(tty,data,0); } tty_flip_buffer_push(tty); 然后用户程序read()的时候就会将响应读取。 可是我使用上面的代码之后,内核又去调我驱动中的serial_write_room()函数,不知是什么原因? |
|