blob: 1296aeb27b6b690dd55a8d1aa0b8885ce03d9b96 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include "swap.h"
#include "common/FFlist.h"
#include "common/mallocHelper.h"
#include <sys/types.h>
#include <sys/swap.h>
#include <sys/param.h>
#include <unistd.h>
const char* ffDetectSwap(FFlist* result) {
int nswap = swapctl(SWAP_NSWAP, 0, 0);
if (nswap < 0) {
return "swapctl(SWAP_NSWAP) failed";
}
if (nswap == 0) {
return NULL;
}
FF_AUTO_FREE struct swapent* swdev = malloc((uint32_t) nswap * sizeof(*swdev));
if (swapctl(SWAP_STATS, swdev, nswap) < 0) {
return "swapctl(SWAP_STATS) failed";
}
for (int i = 0; i < nswap; i++) {
if (swdev[i].se_flags & SWF_ENABLE) {
FFSwapResult* swap = FF_LIST_ADD(FFSwapResult, *result);
ffStrbufInitS(&swap->name, swdev[i].se_path);
swap->bytesUsed = (uint64_t) swdev[i].se_inuse * DEV_BSIZE;
swap->bytesTotal = (uint64_t) swdev[i].se_nblks * DEV_BSIZE;
}
}
return NULL;
}
|