DMA与 kmallloc
来源:互联网 发布:telnet for linux 编辑:程序博客网 时间:2024/05/22 23:59
DMA控制器是一个硬件设备,只能访问特殊的物理地址。在mips架构下,分配出的逻辑地址需要转换成其对应的物理地址,然后才能交给DMA控制器来使用。
最近在GMAC DMA驱动层的实现中发现DMA的内存分配需要调用kmalloc函数而不是最常用的malloc函数来进行。
在网上查到的资料如下:
在设备驱动程序或者内核模块中动态开辟内存,不是用malloc,而是kmalloc ,vmalloc,或者用get_free_pages直接申请页。释放内存用的是kfree,vfree,或free_pages. kmalloc函数返回的是虚拟地址(线性地址). kmalloc特殊之处在于它分配的内存是物理上连续的,这对于要进行DMA的设备十分重要. 而用vmalloc分配的内存只是线性地址连续,物理地址不一定连续,不能直接用于DMA.
- DMA与 kmallloc
- 远程DMA与本地DMA
- Scatter-gather DMA 与 block DMA
- Scatter-gather DMA 与 block DMA
- 一致性DMA与流式DMA
- Scatter-gather DMA与block DMA
- Scatter-gather DMA 与 block DMA
- Scatter-gather DMA 与 block DMA
- SG DMA与普通DMA(block DMA)的区别
- FIFO与DMA
- 内存映射与DMA
- ADC与DMA回顾
- S3C2410 DMA原理与实例
- DMA基本原理 结构与应用
- PIO操作与DMA操作
- DMA的配置与安装
- DMA
- DMA
- 23种设计模式(3):抽象工厂模式
- Hadoop的Python语言封装
- 预处理、编译、连接、运行
- 学习笔记:神秘的 IOCP 完成端口
- jsp 微信公众平台 token验证
- DMA与 kmallloc
- 串口隔离还是有些犹豫
- QT4 编译错误 error: collect2: ld returned 1 exit status
- PE格式详解2 --系统篇
- Linux七天系列------之一
- 分享开发 Android 手机应用的开发经验——QR生成器
- A. Buggy Sorting
- JAVA虚拟机体系结构
- HttpClient 学习