这个来自Linux内核的源代码是做什么的?

时间:2017-03-13 04:39:35

标签: c linux linux-kernel kernel

plot(y~x, ...)

我很困惑这个代码段实际上做了什么。我知道它在内存分配方面做了一些事情,但是如果有人能够向我解释这段代码中发生了什么,我会非常感激!

1 个答案:

答案 0 :(得分:1)

sysinfo系统调用用各种系统信息填充结构。它由SYSCALL_DEFINE1(sysinfo, struct sysinfo __user *, info)定义。

COMPAT_SYSCALL_DEFINE1变体用于与64位内核交互的32位代码。返回结构定义为long值,这意味着64位程序为64位,32位程序为32位。报告的内存大小是mem_unit的倍数。如果totalramtotalswap不适合32位值且mem_unit小于PAGE_SIZE,则它会将mem_unit缩放2最多PAGESIZE并将其余内存值缩小相同的因子。理想情况下,它们现在适合32位值,通过这种方式扩展,32位程序仍然可以获得相当准确的系统信息视图。如果没有,那么没有好办法通过32位API返回好的值,太糟糕了。

注意,目前我认为mem_unit开始时为PAGESIZE,因此此代码可能无法执行任何操作。