diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2023-02-13 15:04:11 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2023-02-13 15:05:19 +0100 |
commit | 669c40ed8ebf480c95ce36135104e474e361a7e6 (patch) | |
tree | 1b2d30afb35c0e6afa1d68132d9a7e5a13841cac | |
parent | 93ae7464e6e460f25b73e4ffefd2d9a6499eae30 (diff) | |
download | busybox-w32-669c40ed8ebf480c95ce36135104e474e361a7e6.tar.gz busybox-w32-669c40ed8ebf480c95ce36135104e474e361a7e6.tar.bz2 busybox-w32-669c40ed8ebf480c95ce36135104e474e361a7e6.zip |
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 <vda.linux@googlemail.com>
-rw-r--r-- | procps/top.c | 25 |
1 files 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) | |||
619 | unsigned busy_jifs; | 619 | unsigned busy_jifs; |
620 | #endif | 620 | #endif |
621 | 621 | ||
622 | /* what info of the processes is shown */ | ||
623 | printf(OPT_BATCH_MODE ? "%.*s" : ESC"[7m" "%.*s" ESC"[m", scr_width, | ||
624 | " PID PPID USER STAT VSZ %VSZ" | ||
625 | IF_FEATURE_TOP_SMP_PROCESS(" CPU") | ||
626 | IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(" %CPU") | ||
627 | " COMMAND"); | ||
628 | lines_rem--; | ||
629 | |||
630 | #if ENABLE_FEATURE_TOP_DECIMALS | 622 | #if ENABLE_FEATURE_TOP_DECIMALS |
631 | # define UPSCALE 1000 | 623 | # define UPSCALE 1000 |
632 | # define CALC_STAT(name, val) div_t name = div((val), 10) | 624 | typedef struct { unsigned quot, rem; } bb_div_t; |
625 | /* Used to have "div_t name = div((val), 10)" here | ||
626 | * (IOW: intended to use libc-compatible way to divide and use | ||
627 | * both result and remainder, but musl does not inline div()...) | ||
628 | * Oh well. Modern compilers detect "N/d, N%d" idiom by themselves: | ||
629 | */ | ||
630 | # define CALC_STAT(name, val) bb_div_t name = { (val) / 10, (val) % 10 } | ||
633 | # define SHOW_STAT(name) name.quot, '0'+name.rem | 631 | # define SHOW_STAT(name) name.quot, '0'+name.rem |
634 | # define FMT "%3u.%c" | 632 | # define FMT "%3u.%c" |
635 | #else | 633 | #else |
@@ -638,6 +636,15 @@ static NOINLINE void display_process_list(int lines_rem, int scr_width) | |||
638 | # define SHOW_STAT(name) name | 636 | # define SHOW_STAT(name) name |
639 | # define FMT "%4u%%" | 637 | # define FMT "%4u%%" |
640 | #endif | 638 | #endif |
639 | |||
640 | /* what info of the processes is shown */ | ||
641 | printf(OPT_BATCH_MODE ? "%.*s" : ESC"[7m" "%.*s" ESC"[m", scr_width, | ||
642 | " PID PPID USER STAT VSZ %VSZ" | ||
643 | IF_FEATURE_TOP_SMP_PROCESS(" CPU") | ||
644 | IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(" %CPU") | ||
645 | " COMMAND"); | ||
646 | lines_rem--; | ||
647 | |||
641 | /* | 648 | /* |
642 | * %VSZ = s->vsz/MemTotal | 649 | * %VSZ = s->vsz/MemTotal |
643 | */ | 650 | */ |