2011-12-15 ADM 使用

0 篇文章 0 订阅

MTK adm buffer 使用:


首先在系统初始化时,会开辟一块内存区域,比如:g_abrepeat_app_mem_pool、g_applib_mem_ap_pool、g_barcodereader_cntx.app_mem_pool(其中此内存块也有可能是在g_applib_mem_ap_pool中划分:g_barcodereader_cntx.app_mem_pool = applib_mem_ap_alloc(g_bcr_cntx.memory.app_mem_pool_pAPPLIB_MEM_AP_ID_BARCODEREADER, BR_APP_TOTAL_SIZE);)、g_bcr_cntx.memory.app_mem_pool_p(applib_mem_ap_alloc_framebuffer(APPLIB_MEM_AP_ID_BCR, MMI_BCR_APP_TOTAL_SIZE);)、g_brw_memory_pool、cca_mempool_g、g_mmi_certman_context.mem_pool、cootek_ADM_pool、g_dictionary_cntx.app_mem_pool。

注:有一些pool是后来使用的时候分配的(从系统初始化memory pool中)

在使用的时候,step1:

通过kal_adm_create(pool,size,subsize(能划分的块的类型:(8、16、32、64……)),logging)创建出一个pool_id,即内存块的地址及相应的属性。

step2:

kal_adm_alloc(pool_id,size(使用的)),得到可以使用的内存地址。

ADM buffer的结构:

typedef struct
{
    kal_uint32 adm_id;    
    kal_uint16 bl_num;    
    kal_uint16 reserved;
    kal_uint32 left_size;  
    kal_uint8 islogging;
    kal_uint8 reserved2[3];
} ADM_CB;

ADM_BL struct //block list

{

size;

reserved;

previous;

next;

}


ADM的释放:

首先是对pool_id 进行释放,即将此id销毁掉。然后对系统后来创建的pool(非初始化创建)进行内存的释放:applib_mem_ap_free等函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值