[git commit master] top: remove GCCisms

Denys Vlasenko vda.linux at googlemail.com
Sat Sep 12 13:11:50 UTC 2009


commit: http://git.busybox.net/busybox/commit/?id=fe73798135d30561f9985278ecc46d41c8ff492e
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
display_process_list                                1447    1448      +1

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 procps/top.c |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/procps/top.c b/procps/top.c
index 7133e5c..a1ad788 100644
--- a/procps/top.c
+++ b/procps/top.c
@@ -348,13 +348,15 @@ static void display_cpus(int scr_width, char *scrbuf, int *lines_rem_p)
 	unsigned total_diff;
 	jiffy_counts_t *p_jif, *p_prev_jif;
 	int i;
-
 # if ENABLE_FEATURE_TOP_SMP_CPU
 	int n_cpu_lines;
 # endif
 
 	/* using (unsigned) casts to make operations cheaper */
-# define  CALC_TOT_DIFF  ((unsigned)(p_jif->total - p_prev_jif->total) ? : 1)
+# define  CALC_TOTAL_DIFF do { \
+	total_diff = (unsigned)(p_jif->total - p_prev_jif->total); \
+	if (total_diff == 0) total_diff = 1; \
+} while (0)
 
 # if ENABLE_FEATURE_TOP_DECIMALS
 #  define CALC_STAT(xxx) char xxx[8]
@@ -381,7 +383,7 @@ static void display_cpus(int scr_width, char *scrbuf, int *lines_rem_p)
 		p_jif = &cpu_jif[i];
 		p_prev_jif = &cpu_prev_jif[i];
 # endif
-		total_diff = CALC_TOT_DIFF;
+		CALC_TOTAL_DIFF;
 
 		{ /* Need a block: CALC_STAT are declarations */
 			CALC_STAT(usr);
@@ -511,6 +513,7 @@ static NOINLINE void display_process_list(int lines_rem, int scr_width)
 	/* xxx_shift and xxx_scale variables allow us to replace
 	 * expensive divides with multiply and shift */
 	unsigned pmem_shift, pmem_scale, pmem_half;
+	unsigned tmp_unsigned;
 #if ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE
 	unsigned pcpu_shift, pcpu_scale, pcpu_half;
 	unsigned busy_jifs;
@@ -565,12 +568,16 @@ static NOINLINE void display_process_list(int lines_rem, int scr_width)
 	 * we assume that unsigned is at least 32-bit.
 	 */
 	pcpu_shift = 6;
-	pcpu_scale = (UPSCALE*64 * (uint16_t)busy_jifs ? : 1);
+	pcpu_scale = UPSCALE*64 * (uint16_t)busy_jifs;
+	if (pcpu_scale == 0)
+		pcpu_scale = 1;
 	while (pcpu_scale < (1U << (BITS_PER_INT-2))) {
 		pcpu_scale *= 4;
 		pcpu_shift += 2;
 	}
-	pcpu_scale /= ( (uint16_t)(cur_jif.total - prev_jif.total) * total_pcpu ? : 1);
+	tmp_unsigned = (uint16_t)(cur_jif.total - prev_jif.total) * total_pcpu;
+	if (tmp_unsigned != 0)
+		pcpu_scale /= tmp_unsigned;
 	/* we want (s->pcpu * pcpu_scale) to never overflow */
 	while (pcpu_scale >= 1024) {
 		pcpu_scale /= 4;
-- 
1.6.3.3



More information about the busybox-cvs mailing list