File Coverage

SysInfo.xs
Criterion Covered Total %
statement 0 27 0.0
branch 0 8 0.0
condition n/a
subroutine n/a
pod n/a
total 0 35 0.0


line stmt bran cond sub pod time code
1             #include "EXTERN.h"
2             #include "perl.h"
3             #include "XSUB.h"
4             #include "stdlib.h"
5             #include "string.h"
6             #include "sys/types.h"
7             #include "sys/sysinfo.h"
8             #include
9              
10 0           double cpuPercent (){
11              
12             static unsigned long long lastTotalUser, lastTotalUserLow, lastTotalSys, lastTotalIdle;
13             double percent;
14              
15             FILE* file;
16             unsigned long long totalUser, totalUserLow, totalSys, totalIdle, total;
17              
18 0           file = fopen("/proc/stat", "r");
19 0           fscanf(file, "cpu %llu %llu %llu %llu", &totalUser, &totalUserLow,
20             &totalSys, &totalIdle);
21 0           fclose(file);
22              
23 0 0         if (totalUser < lastTotalUser || totalUserLow < lastTotalUserLow ||
    0          
    0          
24 0 0         totalSys < lastTotalSys || totalIdle < lastTotalIdle){
25             //Overflow detection. Just skip this value.
26 0           percent = -1.0;
27             }
28             else{
29 0           total = (totalUser - lastTotalUser) + (totalUserLow - lastTotalUserLow) +
30 0           (totalSys - lastTotalSys);
31 0           percent = total;
32 0           total += (totalIdle - lastTotalIdle);
33 0           percent /= total;
34 0           percent *= 100;
35             }
36              
37 0           lastTotalUser = totalUser;
38 0           lastTotalUserLow = totalUserLow;
39 0           lastTotalSys = totalSys;
40 0           lastTotalIdle = totalIdle;
41              
42 0           return percent;
43             }
44              
45 0           double memPercent (){
46             struct sysinfo memInfo;
47              
48 0           sysinfo (&memInfo);
49              
50 0           long long totalPhysMem = memInfo.totalram;
51 0           totalPhysMem *= memInfo.mem_unit;
52              
53 0           long long physMemUsed = memInfo.totalram - memInfo.freeram;
54 0           physMemUsed *= memInfo.mem_unit;
55              
56 0           long long physMemFree = totalPhysMem - physMemUsed;
57              
58 0           double percent = 100.0 * physMemUsed / totalPhysMem;
59              
60 0           return percent;
61             }
62              
63             MODULE = RPi::SysInfo PACKAGE = RPi::SysInfo
64              
65             PROTOTYPES: DISABLE
66              
67              
68             double
69             cpuPercent ()
70              
71             double
72             memPercent ()
73