rk3399 /dev/dma-buf
时间: 2023-07-06 18:39:41 浏览: 83
RK3399 SoC 是一款基于 ARM Cortex-A72 和 Cortex-A53 的六核处理器,它支持 DMA-BUF 内存共享框架。在 RK3399 上,可以通过 /dev/dma-buf 设备节点来访问 DMA-BUF 内存共享缓冲区。
为了创建一个 DMA-BUF 缓冲区,需要使用 DRM 设备来分配内存。DRM 设备会返回一个指向分配内存的指针,然后可以使用 dma_buf_export() 函数将这个指针转换为 DMA-BUF 对象。DMA-BUF 对象可以通过文件描述符进行传递和共享,其他进程可以使用 dma_buf_import() 函数将其转换回指针并访问该内存。
以下是在 RK3399 上使用 DMA-BUF 的一些示例:
1. 分配内存
```c
#include <drm/drmP.h>
struct drm_device *dev; // DRM 设备指针
struct drm_gem_object *gem_obj;
int ret = drm_gem_object_init(dev, &gem_obj, size);
if (ret) {
// 分配内存失败
return ret;
}
```
2. 将内存转换为 DMA-BUF 对象
```c
#include <linux/dma-buf.h>
struct dma_buf *dmabuf = dma_buf_export(gem_obj->filp, gem_obj->size, O_RDWR, NULL);
if (IS_ERR(dmabuf)) {
// 转换失败
drm_gem_object_unreference_unlocked(gem_obj);
return PTR_ERR(dmabuf);
}
```
3. 将 DMA-BUF 对象传递给其他进程
```c
int fd = dma_buf_fd(dmabuf, O_CLOEXEC);
if (fd < 0) {
// 获取文件描述符失败
dma_buf_put(dmabuf);
drm_gem_object_unreference_unlocked(gem_obj);
return fd;
}
```
其他进程可以使用文件描述符打开 DMA-BUF 对象,并使用 dma_buf_import() 函数将其转换回指针以访问该内存。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)