if (ws == WS_RESET) exit(0);
- j = 0;
- for (i = 0; i < num_procs; i++) {
- if (procs[i]->usage.vss) {
- procs[j++] = procs[i];
- } else {
- free(procs[i]);
- }
- }
- num_procs = j;
+ procs.erase(std::remove_if(procs.begin(),
+ procs.end(),
+ [](auto proc){
+ return proc.usage.vss == 0;
+ }),
+ procs.end());
- qsort(procs, num_procs, sizeof(procs[0]), compfn);
+ qsort(procs.data(), procs.size(), sizeof(procs[0]), compfn);
if (has_swap) {
- fd = open("/sys/block/zram0/mem_used_total", O_RDONLY);
- if (fd >= 0) {
- len = read(fd, buffer, sizeof(buffer)-1);
- close(fd);
- if (len > 0) {
- buffer[len] = 0;
- mem[MEMINFO_ZRAM_TOTAL] = atoll(buffer)/1024;
- zram_cr = (float) mem[MEMINFO_ZRAM_TOTAL] /
- (mem[MEMINFO_SWAP_TOTAL] - mem[MEMINFO_SWAP_FREE]);
- has_zram = true;
- }
+ uint64_t zram_mem_used = get_zram_mem_used();
+ if (zram_mem_used) {
+ mem[MEMINFO_ZRAM_TOTAL] = zram_mem_used/1024;
+ zram_cr = (float) mem[MEMINFO_ZRAM_TOTAL] /
+ (mem[MEMINFO_SWAP_TOTAL] - mem[MEMINFO_SWAP_FREE]);
+ has_zram = true;
}
}