iTron3学习笔记(一) System Calls of Memory Pool Management Functions
2008-11-07 17:33
567 查看
iTron3学习笔记(一)
System Calls of Memory Pool Management Functions
1、创建固定内存池(Create Fixed Memory Pool)
说明:在RAM中的固定位置,创建一块内存池。
函数声明:
ER vcre_mpf(ID mpfid,VP start_addr,VP end_addr,INT blfsz)
参数说明:
ID mpfid:创建内存池的ID号
VP start_addr:起始地址
VP end_addr:结束地址
INT blfsz:固定内存池的大小
2、读取内存池中申请固定内存块(Get Fixed-Size Memory Block)
说明:从内存池中申请指定ID的内存地址。
函数声明:
ER get_blf( VP *p_blf, ID mpfid );
参数说明:
VP *p_blf 申请内存指针
ID mpfid 申请内存块ID号
3、释放指定ID号申请的固定内存块(Release Fixed-size Memory Block)
说明:如果在使用后不释放内存块的话,在内存池已满时调用get_blf的任务会进入WAIT状态,直到rel_blf调用后内存池中有空内存块为止。
函数声明:
ER rel_blf(ID mpfid, VP blf)
参数说明:
ID mpfid 释放内存块ID号
VP blf 内存块起始地址指针
4、查看指定ID的内存块状态
函数声明:
ER ref_mpf(T_RMPF *pk_rmpf,ID mpfid)
参数说明:
T_RMPF *pk_rmpf:
ID mpfid
typedef struct pk_rmpf {
BOOL_ID wtsk;//进入WAIT状态的TASKID
INT frbcnt;//内存池中剩余内存块的总数
} T_RMPF;
使用例子:
#define MPF_ID 1
#define MPF_BEGINADDR 0x2300000
#define MPF_SIZE 1000
ER ret;
VP p_blk;//内存块地址
T_RMPF k_rmpf;//内存池状态
ret = vcre_mpf(MPF_ID, (VP)MPFBeginAddr, (VP)(MPF_BEGINADDR + MPF_SIZE + 8), MPF_SIZE);
if(ret == E_OK) //创建成功
{
ref_mpf(&k_rmpf, MPF_ID);
if(k_rmpf.frbcnt>0)//判断是否内存池已满
{
ret = get_blf(&p_blk, MPF_ID);//读取内存块
//数据处理....
ret = rel_blf(MPF_ID, p_plk);//释放申请内存
}
}
else if(ret == E_PAR){} //参数错误
else if(ret == E_NOEXS){} //指定的mpfid已存在或者不可用(大于最大范围)
System Calls of Memory Pool Management Functions
1、创建固定内存池(Create Fixed Memory Pool)
说明:在RAM中的固定位置,创建一块内存池。
函数声明:
ER vcre_mpf(ID mpfid,VP start_addr,VP end_addr,INT blfsz)
参数说明:
ID mpfid:创建内存池的ID号
VP start_addr:起始地址
VP end_addr:结束地址
INT blfsz:固定内存池的大小
2、读取内存池中申请固定内存块(Get Fixed-Size Memory Block)
说明:从内存池中申请指定ID的内存地址。
函数声明:
ER get_blf( VP *p_blf, ID mpfid );
参数说明:
VP *p_blf 申请内存指针
ID mpfid 申请内存块ID号
3、释放指定ID号申请的固定内存块(Release Fixed-size Memory Block)
说明:如果在使用后不释放内存块的话,在内存池已满时调用get_blf的任务会进入WAIT状态,直到rel_blf调用后内存池中有空内存块为止。
函数声明:
ER rel_blf(ID mpfid, VP blf)
参数说明:
ID mpfid 释放内存块ID号
VP blf 内存块起始地址指针
4、查看指定ID的内存块状态
函数声明:
ER ref_mpf(T_RMPF *pk_rmpf,ID mpfid)
参数说明:
T_RMPF *pk_rmpf:
ID mpfid
typedef struct pk_rmpf {
BOOL_ID wtsk;//进入WAIT状态的TASKID
INT frbcnt;//内存池中剩余内存块的总数
} T_RMPF;
使用例子:
#define MPF_ID 1
#define MPF_BEGINADDR 0x2300000
#define MPF_SIZE 1000
ER ret;
VP p_blk;//内存块地址
T_RMPF k_rmpf;//内存池状态
ret = vcre_mpf(MPF_ID, (VP)MPFBeginAddr, (VP)(MPF_BEGINADDR + MPF_SIZE + 8), MPF_SIZE);
if(ret == E_OK) //创建成功
{
ref_mpf(&k_rmpf, MPF_ID);
if(k_rmpf.frbcnt>0)//判断是否内存池已满
{
ret = get_blf(&p_blk, MPF_ID);//读取内存块
//数据处理....
ret = rel_blf(MPF_ID, p_plk);//释放申请内存
}
}
else if(ret == E_PAR){} //参数错误
else if(ret == E_NOEXS){} //指定的mpfid已存在或者不可用(大于最大范围)
相关文章推荐
- MemoryMXBean和MemoryPoolMXBean--OutOfMemoryError Warning System
- c#中 Exception of type 'System.OutOfMemoryException' was throw的解决办法
- sqlserver,执行生成脚本时“引发类型为“System.OutOfMemoryException”的异常”(已解决)
- Summary of Manual Memory Management Rules
- Intel-x86-System-Programming-Guide, Part 1,Chapter 3.1 MEMORY MANAGEMENT OVERVIEW
- ASP.NET 中关于 System.OutOfMemoryException 的问题与解决方法
- sqlserver,执行生成脚本时“引发类型为“System.OutOfMemoryException”的异常”
- win server 2008服务器System.outofmemory.exception解决方法
- dot Text Error: System.OutOfMemoryException
- The construction of enterprise computer network management information system
- System.OutOfMemoryException 的异常
- C#Memory Management for Unity Developers (part 2 of 3)
- c# 处理大批量数据 时遇到 类型为“System.OutOfMemoryException”的异常
- GridView输入Excel时出现"System.OutOfMemoryException: Out of memory"及其解决方案。
- System.OutOfMemoryException
- FastDB - Main Memory Relational Database Management System
- [转]Memory Management Functions
- 引发类型为System.OutOfMemoryException的异常
- What is Linux System Calls and Library Functions?
- how to analyze system crash(memory dump)of windows