libbb: add and use infrastructure for fixed page size optimization

function                                             old     new   delta
procps_scan                                         1121    1118      -3
getpagesize                                            6       -      -6
rpm_main                                            1037    1027     -10
rpm2cpio_main                                        120     110     -10
ptok                                                  38      21     -17
time_main                                           1282    1261     -21
mkswap_main                                          317     278     -39
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 0/6 up/down: 0/-106)           Total: -106 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2020-12-14 18:49:23 +01:00
parent fd3c512f88
commit c7b858ff8d
7 changed files with 37 additions and 20 deletions

View File

@@ -111,6 +111,10 @@ static void printargv(char *const *argv)
This is funky since the pagesize could be less than 1K.
Note: Some machines express getrusage statistics in terms of K,
others in terms of pages. */
#ifdef BB_ARCH_FIXED_PAGESIZE
# define pagesize BB_ARCH_FIXED_PAGESIZE
# define ptok(pagesize, pages) ptok(pages)
#endif
static unsigned long ptok(const unsigned pagesize, const unsigned long pages)
{
unsigned long tmp;
@@ -124,6 +128,7 @@ static unsigned long ptok(const unsigned pagesize, const unsigned long pages)
tmp = pages * pagesize; /* Larger first, */
return tmp / 1024; /* then smaller. */
}
#undef pagesize
/* summarize: Report on the system use of a command.
@@ -177,7 +182,7 @@ static void summarize(const char *fmt, char **command, resource_t *resp)
{
unsigned vv_ms; /* Elapsed virtual (CPU) milliseconds */
unsigned cpu_ticks; /* Same, in "CPU ticks" */
unsigned pagesize = getpagesize();
unsigned pagesize = bb_getpagesize();
/* Impossible: we do not use WUNTRACED flag in wait()...
if (WIFSTOPPED(resp->waitstatus))