Ejemplo n.º 1
0
void currentProcessMemoryStatus(ProcessMemoryStatus& memoryStatus)
{
    FILE* file = fopen("/proc/self/statm", "r");
    if (!file)
        return;

    char buffer[128];
    char* line = fgets(buffer, 128, file);
    fclose(file);
    if (!line)
        return;

    size_t pageSize = systemPageSize();
    char* end = nullptr;
    unsigned long long intValue = strtoull(line, &end, 10);
    memoryStatus.size = intValue * pageSize;
    intValue = strtoull(end, &end, 10);
    memoryStatus.resident = intValue * pageSize;
    intValue = strtoull(end, &end, 10);
    memoryStatus.shared = intValue * pageSize;
    intValue = strtoull(end, &end, 10);
    memoryStatus.text = intValue * pageSize;
    intValue = strtoull(end, &end, 10);
    memoryStatus.lib = intValue * pageSize;
    intValue = strtoull(end, &end, 10);
    memoryStatus.data = intValue * pageSize;
    intValue = strtoull(end, &end, 10);
    memoryStatus.dt = intValue * pageSize;
}
Ejemplo n.º 2
0
size_t pageSize()
{
    if (!s_pageSize)
        s_pageSize = systemPageSize();
    ASSERT(isPowerOfTwo(s_pageSize));
    return s_pageSize;
}