ION MEM

ION
  • ION是Google的下一代内存管理器,用来支持不同的内存分配机制,如CARVOUT(PMEM),物理连续内存(kmalloc), 虚拟地址连续但物理不连续内存(vmalloc), IOMMU
  • 用户空间是通过/dev/ion来创建client
  • struct ion_heap
    用来表示内存分配的相关信息,包括id, type, name等。
 enum ion_heap_type {
     
   ION_HEAP_TYPE_SYSTEM,   //memory allocated via vmalloc 
   ION_HEAP_TYPE_SYSTEM_CONTIG,    //memory allocated via kmalloc 
   ION_HEAP_TYPE_CARVEOUT,      //allocations are physically contiguous 
   ION_HEAP_TYPE_IOMMU,  
   ION_HEAP_TYPE_CP,       //content protection. physically contiguous 
   ION_HEAP_TYPE_DMA,  
   ION_HEAP_TYPE_CUSTOM, /* must be last so device specific heaps always 
                are at the end of this enum */  
   ION_NUM_HEAPS,  
};  
  • Client
    Ion的使用者,使用ION的buffer,必须先创建一个client,一个client可以有多个buffer,用struct ion_buffer表示。
  • Handle
    ION用handle来管理buffer,一般用户直接拿到的是handle,而不是buffer。 用struct ion_handle表示。
heap type 和heap id

用户空间不能指定heap type,而是指定heap id,
id和type有对应关系

enum ion_heap_ids {
   INVALID_HEAP_ID = -1,
   ION_CP_MM_HEAP_ID = 8,
   ION_CP_MFC_HEAP_ID = 12,
   ION_CP_WB_HEAP_ID = 16, /* 8660 only */
   ION_CAMERA_HEAP_ID = 20, /* 8660 only */
   ION_SF_HEAP_ID = 24,
   ION_IOMMU_HEAP_ID = 25,
   ION_QSECOM_HEAP_ID = 26,
   ION_AUDIO_HEAP_BL_ID = 27,
   ION_AUDIO_HEAP_ID = 28,

   ION_MM_FIRMWARE_HEAP_ID = 29,
   ION_SYSTEM_HEAP_ID = 30,

   ION_HEAP_ID_RESERVED = 31 /** Bit reserved for ION_SECURE flag */
   }
struct ion_platform_heap msm7627a_heaps[] = {  
       {  
           .id = ION_SYSTEM_HEAP_ID,  
           .type   = ION_HEAP_TYPE_SYSTEM,  
           .name   = ION_VMALLOC_HEAP_NAME,  
       },  
#ifdef CONFIG_MSM_MULTIMEDIA_USE_ION  
       /* PMEM_ADSP = CAMERA */  
       {  
           .id = ION_CAMERA_HEAP_ID,  
           .type   = CAMERA_HEAP_TYPE,  
           .name   = ION_CAMERA_HEAP_NAME,  
           .memory_type = ION_EBI_TYPE,  
           .extra_data = (void *)&co_mm_ion_pdata,  
           .priv   = (void *)&ion_cma_device.dev,  
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值