lovecad
驱动牛犊
驱动牛犊
  • 注册日期2007-03-20
  • 最后登录2007-08-05
  • 粉丝0
  • 关注0
  • 积分100分
  • 威望11点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
阅读:912回复:0

求助:谁能帮忙解释一下这几个宏?

楼主#
更多 发布于:2007-04-14 00:57
  Linux内核源代码中,include/linux/usb.c中,定义了以下三个宏,从注释能看出它们和usb传输中的Data0/Data1交替作包头有关系,但是我看不懂这几个宏具体在做什么,尤其是第三个,usb_settoggle,比较复杂,谁能指点一下.不胜感激,感激涕零!

/* The D0/D1 toggle bits ... USE WITH CAUTION (they're almost hcd-internal) */
#define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> (ep)) & 1)
#define    usb_dotoggle(dev, ep, out)  ((dev)->toggle[out] ^= (1 << (ep)))
#define usb_settoggle(dev, ep, out, bit) ((dev)->toggle[out] = ((dev)->toggle[out] & ~(1 << (ep))) | ((bit) << (ep)))
游客

返回顶部