【问题标题】:VxWorks 6.9 memInfoGet returns -1?VxWorks 6.9 memInfoGet 返回 -1?
【发布时间】:2017-11-14 15:13:11
【问题描述】:

我正在开发 vxWorks 6.9 并尝试使用以下函数获取堆分配上的一些数字

void DebugGetMemUsage(PART_ID partId)

{

MEM_PART_STATS   partStats;
char text[30] = {0};


if(memPartInfoGet(partId,&partStats) == OK)
{
    sprintf(text,"%u %u %u %u %u %u"
                                ,partStats.maxBlockSizeFree,
                                partStats.maxBytesAlloc,
                                partStats.numBlocksAlloc,
                                partStats.numBlocksFree,
                                partStats.numBytesAlloc,
                                partStats.numBytesFree);

    Send_Debug(0,text);

}
else
{
    Send_Debug(0,"memPartInfoGet Error");       
}

}

这就是我的称呼

DebugGetMemUsage(memSysPartId);

每次我调用 DebugGetMemUsage 我都会收到

memPartInfoGet Error

我也试过了

int res = memInfoGet(&partStats);
sprintf(text,"memInfoGet result : %d",res);
DCI_Debug(0,text);

并在控制台上收到 -1 作为 memInfoGet 的返回值

知道我做错了什么吗?

谢谢

【问题讨论】:

  • 我看到您使用 memInfoGet 的方式错误,没有指定池。附上我们的样本以供参考。

标签: vxworks


【解决方案1】:

尝试以下命令验证 memSysPartId。

-> my_buffer = malloc(64)
-> memset (my_buffer,0,64)
-> memPartInfoGet memSysPartId,my_buffer
-> d my_buffer,64,4
NOTE: memory values are displayed in hexadecimal.
0x101a19c0:           0278c228 00000103 026affd0  *    ( x ......j.*
0x101a19d0:  09f8d078 00004d32 0a04d7e4 00000000  *x...2M..........*

内存转储中的 0x026affd0 是 maxBlockSizeFree。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 2015-02-18
    • 1970-01-01
    相关资源
    最近更新 更多