diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2020-11-27 12:40:31 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2020-11-27 12:40:31 +0100 |
commit | fc63549352c371617e68fcf7ecbe4978fa207c6a (patch) | |
tree | 559dd67966454b50af62eb54f3d728d4ad49460f /procps | |
parent | 20900489a1fff2a563999d90e24239206f202b21 (diff) | |
download | busybox-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.c | 16 |
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) |