Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26348
  • 博文数量: 9
  • 博客积分: 185
  • 博客等级: 入伍新兵
  • 技术积分: 90
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-08 19:14
文章分类
文章存档

2013年(10)

我的朋友

分类: LINUX

2013-01-12 20:02:50

void *usb_buffer_alloc (struct usb_device *dev, size_t size, gfp_t mem_flags, dma_addr_t *dma);

这个函数是 usbcore 提供的 . 从名字上就能知道它是用来申请内存的 ,内核中给出了一些介绍。

 

第一个参数就是 struct usb_device 结构体的指针 , 第二个参数申请的 buffer 的大小 , 第三个参数 ,GFP_KERNEL, 是一个内存申请的 flag, 通常内存申请都用这个 flag, 除非是中断上下文 , 不能睡眠 , 那就得用 GPF_ATOMIC, 这里没那么多要求 .而 usb_buffer_alloc() 的第四个参数 涉及到 dma 传输 .该函数不仅进行内存分配,还会进行DMA映射,这里第四个参数将被设置为DMA地址。

这个地址用于传输DMA缓冲区数据的urb。

usb_buffer_alloc 申请的内存空间需要用它的搭档 usb_buffer_free() 来释放

 
阅读(1461) | 评论(0) | 转发(0) |
0

上一篇:usb_register 与 usb_regieter_dev

下一篇:spinlock

给主人留下些什么吧!~~