From 669c40ed8ebf480c95ce36135104e474e361a7e6 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Mon, 13 Feb 2023 15:04:11 +0100 Subject: top: stop using div() from libc, compilers now do it better function old new delta div 23 - -23 display_process_list 1237 1178 -59 ------------------------------------------------------------------------------ (add/remove: 0/2 grow/shrink: 0/1 up/down: 0/-82) Total: -82 bytes Signed-off-by: Denys Vlasenko --- procps/top.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/procps/top.c b/procps/top.c index ff775422c..6d25d9633 100644 --- a/procps/top.c +++ b/procps/top.c @@ -619,17 +619,15 @@ static NOINLINE void display_process_list(int lines_rem, int scr_width) unsigned busy_jifs; #endif - /* what info of the processes is shown */ - printf(OPT_BATCH_MODE ? "%.*s" : ESC"[7m" "%.*s" ESC"[m", scr_width, - " PID PPID USER STAT VSZ %VSZ" - IF_FEATURE_TOP_SMP_PROCESS(" CPU") - IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(" %CPU") - " COMMAND"); - lines_rem--; - #if ENABLE_FEATURE_TOP_DECIMALS # define UPSCALE 1000 -# define CALC_STAT(name, val) div_t name = div((val), 10) +typedef struct { unsigned quot, rem; } bb_div_t; +/* Used to have "div_t name = div((val), 10)" here + * (IOW: intended to use libc-compatible way to divide and use + * both result and remainder, but musl does not inline div()...) + * Oh well. Modern compilers detect "N/d, N%d" idiom by themselves: + */ +# define CALC_STAT(name, val) bb_div_t name = { (val) / 10, (val) % 10 } # define SHOW_STAT(name) name.quot, '0'+name.rem # define FMT "%3u.%c" #else @@ -638,6 +636,15 @@ static NOINLINE void display_process_list(int lines_rem, int scr_width) # define SHOW_STAT(name) name # define FMT "%4u%%" #endif + + /* what info of the processes is shown */ + printf(OPT_BATCH_MODE ? "%.*s" : ESC"[7m" "%.*s" ESC"[m", scr_width, + " PID PPID USER STAT VSZ %VSZ" + IF_FEATURE_TOP_SMP_PROCESS(" CPU") + IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(" %CPU") + " COMMAND"); + lines_rem--; + /* * %VSZ = s->vsz/MemTotal */ -- cgit v1.2.3-55-g6feb