sailor
驱动牛犊
驱动牛犊
  • 注册日期2002-04-02
  • 最后登录2011-04-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1311回复:0

请问lingzjl和各位大侠,flip_buffer的问题

楼主#
更多 发布于:2004-04-29 14:12
我在做一个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()函数,不知是什么原因?
游客

返回顶部