aboutsummaryrefslogtreecommitdiff
path: root/procps
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2020-11-27 12:40:31 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2020-11-27 12:40:31 +0100
commitfc63549352c371617e68fcf7ecbe4978fa207c6a (patch)
tree559dd67966454b50af62eb54f3d728d4ad49460f /procps
parent20900489a1fff2a563999d90e24239206f202b21 (diff)
downloadbusybox-w32-fc63549352c371617e68fcf7ecbe4978fa207c6a.tar.gz
busybox-w32-fc63549352c371617e68fcf7ecbe4978fa207c6a.tar.bz2
busybox-w32-fc63549352c371617e68fcf7ecbe4978fa207c6a.zip
free: code shrink
function old new delta free_main 664 657 -7 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'procps')
-rw-r--r--procps/free.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/procps/free.c b/procps/free.c
index b33506b9e..0adef501f 100644
--- a/procps/free.c
+++ b/procps/free.c
@@ -97,10 +97,10 @@ int free_main(int argc UNUSED_PARAM, char **argv IF_NOT_DESKTOP(UNUSED_PARAM))
97 case 'k': /* 2^10 */ 97 case 'k': /* 2^10 */
98 /* G.unit_steps = 10; - already is */ 98 /* G.unit_steps = 10; - already is */
99 break; 99 break;
100 case 'm': /* 2^(2*10) */ 100 case 'm': /* 2^20 */
101 G.unit_steps = 20; 101 G.unit_steps = 20;
102 break; 102 break;
103 case 'g': /* 2^(3*10) */ 103 case 'g': /* 2^30 */
104 G.unit_steps = 30; 104 G.unit_steps = 30;
105 break; 105 break;
106 default: 106 default:
@@ -117,16 +117,24 @@ int free_main(int argc UNUSED_PARAM, char **argv IF_NOT_DESKTOP(UNUSED_PARAM))
117 ); 117 );
118 118
119 sysinfo(&info); 119 sysinfo(&info);
120 /* Kernels prior to 2.4.x will return info.mem_unit==0, so cope... */
121 G.mem_unit = (info.mem_unit ? info.mem_unit : 1);
122 /* Extract cached and memavailable from /proc/meminfo and convert to mem_units */ 120 /* Extract cached and memavailable from /proc/meminfo and convert to mem_units */
123 seen_available = parse_meminfo(&G); 121 seen_available = parse_meminfo(&G);
122 G.mem_unit = (info.mem_unit ? info.mem_unit : 1); /* kernels < 2.4.x return mem_unit==0, so cope */
124 available = ((unsigned long long) G.available_kb * 1024) / G.mem_unit; 123 available = ((unsigned long long) G.available_kb * 1024) / G.mem_unit;
125 cached = ((unsigned long long) G.cached_kb * 1024) / G.mem_unit; 124 cached = ((unsigned long long) G.cached_kb * 1024) / G.mem_unit;
126 cached += info.bufferram; 125 cached += info.bufferram;
127 cached += ((unsigned long long) G.reclaimable_kb * 1024) / G.mem_unit; 126 cached += ((unsigned long long) G.reclaimable_kb * 1024) / G.mem_unit;
128 cached_plus_free = cached + info.freeram; 127 cached_plus_free = cached + info.freeram;
129 128
129/* In case (long long * G.mem_unit) can overflow, this can be used to reduce the chances */
130#if 0 //ENABLE_DESKTOP
131 while (!(G.mem_unit & 1) && G.unit_steps != 0) {
132 G.mem_unit >>= 1;
133 G.unit_steps--;
134 //bb_error_msg("mem_unit:%d unit_steps:%d", G.mem_unit, G.unit_steps);
135 }
136#endif
137
130#define FIELDS_6 "%12llu %11llu %11llu %11llu %11llu %11llu\n" 138#define FIELDS_6 "%12llu %11llu %11llu %11llu %11llu %11llu\n"
131#define FIELDS_3 (FIELDS_6 + 6 + 7 + 7) 139#define FIELDS_3 (FIELDS_6 + 6 + 7 + 7)
132#define FIELDS_2 (FIELDS_6 + 6 + 7 + 7 + 7) 140#define FIELDS_2 (FIELDS_6 + 6 + 7 + 7 + 7)