29
29
#include " mem_linux.hh"
30
30
31
31
#if defined(FT_HAVE_ERRNO_H)
32
- # include < errno.h> // for errno
32
+ #include < errno.h> // for errno
33
33
#elif defined(FT_HAVE_CERRNO)
34
- # include < cerrno> // for errno
34
+ #include < cerrno> // for errno
35
35
#endif
36
36
#if defined(FT_HAVE_STDIO_H)
37
- # include < stdio.h> // for FILE, fopen(), fclose()
37
+ #include < stdio.h> // for FILE, fopen(), fclose()
38
38
#elif defined(FT_HAVE_CSTDIO)
39
- # include < cstdio> // for FILE, fopen(), fclose()
39
+ #include < cstdio> // for FILE, fopen(), fclose()
40
40
#endif
41
41
#if defined(FT_HAVE_STRING_H)
42
- # include < string.h> // for strcmp()
42
+ #include < string.h> // for strcmp()
43
43
#elif defined(FT_HAVE_CSTRING)
44
- # include < cstring> // for strcmp()
44
+ #include < cstring> // for strcmp()
45
45
#endif
46
46
47
-
48
47
#include " ../log.hh" // for ff_log()
49
48
50
-
51
49
FT_ARCH_NAMESPACE_BEGIN
52
50
53
51
/* *
54
52
* return an approximation of free system memory in bytes,
55
53
* or 0 if cannot be determined
56
54
*/
57
55
ft_uoff ff_arch_linux_mem_system_free () {
58
- FILE * f = fopen (" /proc/meminfo" , " r" );
56
+ FILE *f = fopen (" /proc/meminfo" , " r" );
59
57
if (f == NULL ) {
60
58
ff_log (FC_WARN, errno, " failed to open /proc/meminfo, maybe /proc is not mounted?" );
61
59
return 0 ;
@@ -67,7 +65,7 @@ ft_uoff ff_arch_linux_mem_system_free() {
67
65
int err;
68
66
69
67
while (left != 0 ) {
70
- if ((err = fscanf (f, " %256s %" FT_ULL " %8s \n " , label, & n_ull, unit)) <= 0 ) {
68
+ if ((err = fscanf (f, " %255s %" FT_ULL " %7s \n " , label, &n_ull, unit)) <= 0 ) {
71
69
if (ferror (f))
72
70
ff_log (FC_WARN, errno, " error reading /proc/meminfo" );
73
71
break ;
@@ -81,25 +79,43 @@ ft_uoff ff_arch_linux_mem_system_free() {
81
79
if (strcmp (label, " MemFree:" ) && strcmp (label, " Buffers:" ) && strcmp (label, " Cached:" ))
82
80
continue ;
83
81
switch (unit[0 ]) {
84
- case ' k' : scale = 10 ; break ; // 2^10 = 1k
85
- case ' M' : scale = 20 ; break ; // 2^20 = 1M
86
- case ' G' : scale = 30 ; break ; // 2^30 = 1G
87
- case ' T' : scale = 40 ; break ; // 2^40 = 1T
88
- case ' P' : scale = 50 ; break ; // 2^50 = 1P
89
- case ' E' : scale = 60 ; break ; // 2^60 = 1E
90
- case ' Z' : scale = 70 ; break ; // 2^70 = 1Z
91
- case ' Y' : scale = 80 ; break ; // 2^80 = 1Y
92
- default : scale = 0 ; break ;
82
+ case ' k' :
83
+ scale = 10 ;
84
+ break ; // 2^10 = 1k
85
+ case ' M' :
86
+ scale = 20 ;
87
+ break ; // 2^20 = 1M
88
+ case ' G' :
89
+ scale = 30 ;
90
+ break ; // 2^30 = 1G
91
+ case ' T' :
92
+ scale = 40 ;
93
+ break ; // 2^40 = 1T
94
+ case ' P' :
95
+ scale = 50 ;
96
+ break ; // 2^50 = 1P
97
+ case ' E' :
98
+ scale = 60 ;
99
+ break ; // 2^60 = 1E
100
+ case ' Z' :
101
+ scale = 70 ;
102
+ break ; // 2^70 = 1Z
103
+ case ' Y' :
104
+ scale = 80 ;
105
+ break ; // 2^80 = 1Y
106
+ default :
107
+ scale = 0 ;
108
+ break ;
93
109
}
94
110
/* overflow? then approximate.. */
95
- if (scale >= 8 * sizeof (ft_ull) || n_ull > (ft_ull)-1 >> scale)
111
+ if (scale >= 8 * sizeof (ft_ull) || n_ull > (ft_ull)-1 >> scale)
96
112
n_ull = (ft_ull)-1 ;
97
113
else
98
114
n_ull <<= scale;
99
115
100
- n = (ft_uoff) n_ull;
116
+ n = (ft_uoff)n_ull;
101
117
/* overflow? then approximate.. */
102
- if ((ft_ull) n != n_ull || n > (ft_uoff)-1 - total) {
118
+ if ((ft_ull)n != n_ull || n > (ft_uoff)-1 - total) {
103
119
total = (ft_uoff)-1 ;
104
120
break ;
105
121
}
@@ -113,6 +129,4 @@ ft_uoff ff_arch_linux_mem_system_free() {
113
129
114
130
FT_ARCH_NAMESPACE_END
115
131
116
-
117
132
#endif /* __linux__ */
118
-
0 commit comments