-
存储设备维护手册中关于EMC DataDomain 2500的内存控制块数据结构
资源介绍
程序清单 L7.1 内存控制块的数据结构
typedef struct {
void *OSMemAddr;
void *OSMemFreeList;
INT32U OSMemBlkSize;
INT32U OSMemNBlks;
INT32U OSMemNFree;
} OS_MEM;
.OSMemAddr是指向内存分区起始地址的指针。它在建立内存分区[见 7.1节,建立一个内存分
区,OSMemCreate()]时被初始化,在此之后就不能更改了。
.OSMemFreeList是指向下一个空闲内存控制块或者下一个空闲的内存块的指针,具体含义要
根据该内存分区是否已经建立来决定[见 7.1节]。
.OSMemBlkSize是内存分区中内存块的大小,是用户建立该内存分区时指定的[见 7.1节]。
.OSMemNBlks是内存分区中总的内存块数量,也是用户建立该内存分区时指定的[见 7.1节]。
.OSMemNFree是内存分区中当前可以得空闲内存块数量。
如果要在µC/OS-II中使用内存管理,需要在 OS_CFG.H文件中将开关量 OS_MEM_EN设置为 1。
这样µC/OS-II 在启动时就会对内存管理器进行初始化[由 OSInit()调用 OSMemInit()实现]。
该初始化主要建立一个图 F7.3所示的内存控制块链表,其中的常数 OS_MAX_MEM_PART(见文
件 OS_CFG.H)定义了最大的内存分区数,该常数值至少应为 2。