首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对VeriFone库的可用内存调用

对VeriFone库的可用内存调用
EN

Stack Overflow用户
提问于 2015-08-18 13:39:51
回答 1查看 160关注 0票数 1

是否有任何开发人员看到了对VeriFone库函数的内存调用结果与svc_swi.h的Evo范围不一致?

我们的旧代码似乎适合Verix/VerixV。但是对于一个较新的单元(这些单元的内存比以前的HW大得多),这些结果出现在我们的监测中:

内存总数: 65536k总闪存: 131072k可用RAM: 114654k可用Flash: 114650k

获得这些统计数据的代码不变,因为我们添加了Evo到我们的稳定。

代码语言:javascript
复制
long GetFileSysAvail(const char *drive) const
{
    fs_size fs;

    fs.Avail = 0;
#ifdef __arm
    (void)dir_get_sizes(drive, &fs);
#else
    dir_get_sizes((char *)drive, &fs);
#endif

    return fs.Avail;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-18 16:44:22

我不确定,但我会冒险猜测--在Verix和VerixV终端(如3740/3750和510/570)中,有闪存内存,您在文件名之前指示I:F:来指定您想要的“驱动器”。在520中(我怀疑其他eVo终端,但我不确定)没有(非易失性的) RAM,所以即使您指定了I:,您仍然在存储到闪存。

如果您查看dir_get_sizes的文档,您将注意到,在Verix V版本中写入的内容与在eVo版本中编写的文档不同。在我看来,真正突出的主要区别是:

I:和F:都在Nand闪存上,生成的结构fs_sizes的“效用”成员在函数调用时告诉总可用NAND内存(I:+ F:)。

这一切都很好,并且可以解释为什么“可用”高于“总计”,特别是因为您使用不同的API来获得总大小(我假设是SVC_RAM_SIZE和SVC_FLASH_SIZE),这可能对I:F:有某种区别。如果是这样的话,那就意味着您只使用了大约81954k的可用存储空间。...Except的一个困扰问题:“可用内存”比“可用闪存”高4k,我们希望它们是相同的。除非你在调用之间分配和/或存储其他东西,否则我无法解释.?

另一个重要的区别是,虽然两者都返回一个int,但Verix版本只表明-1是在失败时返回的(这意味着,但没有明确声明0是在成功时返回的),而errno设置为ENOENTEACCES。另一方面,eVo版本声明返回值是“可用内存(以字节为单位)”。比较从dir_get_sizes返回的值和在fs.Avail中返回的值可能很有趣。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32074084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档