plot(y~x, ...)
我很困惑这个代码段实际上做了什么。我知道它在内存分配方面做了一些事情,但是如果有人能够向我解释这段代码中发生了什么,我会非常感激!
答案 0 :(得分:1)
sysinfo
系统调用用各种系统信息填充结构。它由SYSCALL_DEFINE1(sysinfo, struct sysinfo __user *, info)
定义。
COMPAT_SYSCALL_DEFINE1
变体用于与64位内核交互的32位代码。返回结构定义为long
值,这意味着64位程序为64位,32位程序为32位。报告的内存大小是mem_unit
的倍数。如果totalram
或totalswap
不适合32位值且mem_unit
小于PAGE_SIZE
,则它会将mem_unit
缩放2最多PAGESIZE
并将其余内存值缩小相同的因子。理想情况下,它们现在适合32位值,通过这种方式扩展,32位程序仍然可以获得相当准确的系统信息视图。如果没有,那么没有好办法通过32位API返回好的值,太糟糕了。
注意,目前我认为mem_unit
开始时为PAGESIZE
,因此此代码可能无法执行任何操作。