obj-$(CONFIG_DMABUF_HEAPS_CMA) += cma_heap.o 247 changes: 247 additions & 0 deletions 247 drivers/dma-buf/heaps/page_pool.c Original file line numberDiff line numberDiff line change @@ -0,0 +1,247 @@ // SPDX-License-Identifier: GPL-2.0 /* * DMA BUF page pool system * * ...
("ANDROID: dma-buf: heaps: Add a shrinker controlled page pool") Signed-off-by: liuhailong <liuhailong@oppo.com> Signed-off-by: xieliujie <xieliujie@oppo.com> Change-Id: I6f129926c96176258a965964c24602fc647db61e Loading branch information xie...
dma内存不仅可以在用户态进程间通过fd共享,内核层也可以访问,异构设备GPU。因此目前显示,音频,Camera场景下使用的非常多。 /system/memory/libdmabufheap https://source.android.com/docs/core/architecture/kernel/dma-buf-heaps?hl=zh-cnsource.android.com/docs/core/architecture/kernel/dma-buf-heaps?hl=zh...
dalvik.vm.heapstartsize –App启动后,系统分配给它的Heap初始大小,随着App使用可增加。 dalvik.vm.heapgrowthlimit – 默认情况下, App可使用的Heap的最大值, 超过这个值就会产生OOM. dalvik.vm.heapsize – 如果App的manifest文件中配置了largeHeap属性, 那么App可使用的Heap的最大值为此项设定值。 1 2 3 4...
int ion_alloc_fd(size_t len, unsigned int heap_id_mask, unsigned int flags) { int fd; struct dma_buf *dmabuf; dmabuf = ion_alloc_dmabuf(len, heap_id_mask, flags); if (IS_ERR(dmabuf)) { return PTR_ERR(dmabuf); } fd = dma_buf_fd(dmabuf, O_CLOEXEC); ...
ION_IOC_SHARE 及ION_IOC_IMPORT是基于DMABUF实现的,所以当共享进程获取文件描述符后,可以直接调用mmap来操作共享内存。mmap实现由DMABUF子系统调用ION子系统中mmap回调函数完成。 内核空间 API 内核驱动也可以注册为一个ION的客户端(client),可以选择使用哪种类型的heap来申请内存。
ION是一个安卓下统一的堆(Heap)管理接口。使用ION可以灵活的实现一些特定的内存管理器;正适合作为管理安全内存的接口。ION的实现基于DmaBuf;后者是一套内核API,可以实现在进程间的Dma内存共享;ION在内核API的基础上提供了接口供应用程序调用(/dev/ion);使得用户程序也能够分配在进程间共享的Dma内存。
ION_HEAP_TYPE_DMA, //memory allocated via DMA API ion_cma_heap.c ION_HEAP_TYPE_CUSTOM, //device specific heaps ION_NUM_HEAPS = 16, }; 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 不同type的heap需要不同的method例如ion_system_heap.c/ion_cma_heap.c去分配; ...
ION_IOC_SHARE 及ION_IOC_IMPORT是基于DMABUF实现的,所以当共享进程获取文件描述符后,可以直接调用mmap来操作共享内存。mmap实现由DMABUF子系统调用ION子系统中mmap回调函数完成。 内核空间 API 内核驱动也可以注册为一个ION的客户端(client),可以选择使用哪种类型的heap来申请内存。
ION_IOC_SHARE 及ION_IOC_IMPORT是基于DMABUF实现的,所以当共享进程获取文件描述符后,可以直接调用mmap来操作共享内存。mmap实现由DMABUF子系统调用ION子系统中mmap回调函数完成。 内核空间 API 内核驱动也可以注册为一个ION的客户端(client),可以选择使用哪种类型的heap来申请内存。