2013年(10)
分类: LINUX
2013-01-12 20:02:50
这个函数是 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() 来释放 。