📄 memtest.c
字号:
/*
* ======== memtest.c ========
*/
#include <std.h>
#include <log.h>
#include <mem.h>
#include "memtestcfg.h"
#define NALLOCS 2 /* 每一个存储段中分配的个数 */
#define BUFSIZE 128 /* 每个存储段分配的大小*/
extern Int SEG0; /* 外部变量,存储段的名字为SEG0*/
static Void printmem(Int segid); /* 用来显示内存分配与释放情况的函数*/
/*
* ======== main ========
*/
Void main()
{
LOG_printf(&trace, "memtest example started.\n"); /* task运行时需要调用的函数*/
}
/*
* ======== initTask ========
*/
Void initTask()
{
Int i;
Ptr ram[NALLOCS]; /*ram重的指针数组*/
LOG_printf(&trace, "before allocating ...");
/*显示SEG0存储段在分配前的状态*/
printmem(SEG0);
LOG_printf(&trace, "allocating ...");
/* 下一段程序用来分配一段内存空间 */
for (i = 0; i < NALLOCS; i++) {
/*在SEG0段分配大小为128byte的存储空间,
*并返回该存储段的首地址存于ram数组中*/
ram[i] = MEM_alloc(SEG0, BUFSIZE, 0);
LOG_printf(&trace, "seg %d: ptr = 0x%x", SEG0, ram[i]);
}
LOG_printf(&trace, "after allocating ...");
/*打印分配好内存空间的存储段SEG0*/
printmem(SEG0);
/*释放刚刚在SEG0段分配的128B空间 */
for (i = 0; i < NALLOCS; i++) {
MEM_free(SEG0, ram[i], BUFSIZE);/* free函数中的参数必须和allocate函数中的参数完全一致*/
}
LOG_printf(&trace, "after freeing ...");
/*打印释放完空间的SEG0存储段的状态*/
printmem(SEG0);
LOG_printf(&trace, "Test Complete");
}
/*
* ======== printmem ========
*/
static Void printmem(Int segid)/*用来显示segid存储段状态的函数*/
{
MEM_Stat statbuf;
MEM_stat(segid, &statbuf); /*调用bool类型的存储器状态函数;当segid段的存储区available时,MEM_stat返回true,否则返回0*/
LOG_printf(&trace, "seg %d: O 0x%x", segid, statbuf.size);/*打印存储段号SEG0和存储段的大小*/
LOG_printf(&trace, "\tU 0x%x\tA 0x%x", statbuf.used, statbuf.length);/*打印存储段SEG0用过的大小和存储块中连续空间的长度*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -