diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2020-12-14 18:49:23 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2020-12-14 18:54:30 +0100 |
commit | c7b858ff8d2e8b2d785f74b2d319bc9c839f4faa (patch) | |
tree | 9ad109d5999444dfb3a281678b6b63d2570a76cd /archival | |
parent | fd3c512f88d43e6633bd3c3110cfa0bb321adaa8 (diff) | |
download | busybox-w32-c7b858ff8d2e8b2d785f74b2d319bc9c839f4faa.tar.gz busybox-w32-c7b858ff8d2e8b2d785f74b2d319bc9c839f4faa.tar.bz2 busybox-w32-c7b858ff8d2e8b2d785f74b2d319bc9c839f4faa.zip |
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>
Diffstat (limited to 'archival')
-rw-r--r-- | archival/rpm.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/archival/rpm.c b/archival/rpm.c index a4d850b46..af8db99a6 100644 --- a/archival/rpm.c +++ b/archival/rpm.c | |||
@@ -83,7 +83,9 @@ struct globals { | |||
83 | void *map; | 83 | void *map; |
84 | rpm_index *mytags; | 84 | rpm_index *mytags; |
85 | int tagcount; | 85 | int tagcount; |
86 | unsigned mapsize, pagesize; | 86 | unsigned mapsize; |
87 | IF_VARIABLE_ARCH_PAGESIZE(unsigned pagesize;) | ||
88 | #define G_pagesize cached_pagesize(G.pagesize) | ||
87 | } FIX_ALIASING; | 89 | } FIX_ALIASING; |
88 | #define G (*(struct globals*)bb_common_bufsiz1) | 90 | #define G (*(struct globals*)bb_common_bufsiz1) |
89 | #define INIT_G() do { setup_common_bufsiz(); } while (0) | 91 | #define INIT_G() do { setup_common_bufsiz(); } while (0) |
@@ -141,7 +143,7 @@ static int rpm_gettags(const char *filename) | |||
141 | G.mytags = tags; | 143 | G.mytags = tags; |
142 | 144 | ||
143 | /* Map the store */ | 145 | /* Map the store */ |
144 | storepos = (storepos + G.pagesize) & -(int)G.pagesize; | 146 | storepos = (storepos + G_pagesize) & -(int)G_pagesize; |
145 | /* remember size for munmap */ | 147 | /* remember size for munmap */ |
146 | G.mapsize = storepos; | 148 | G.mapsize = storepos; |
147 | /* some NOMMU systems prefer MAP_PRIVATE over MAP_SHARED */ | 149 | /* some NOMMU systems prefer MAP_PRIVATE over MAP_SHARED */ |
@@ -356,7 +358,7 @@ int rpm_main(int argc, char **argv) | |||
356 | int opt, func = 0; | 358 | int opt, func = 0; |
357 | 359 | ||
358 | INIT_G(); | 360 | INIT_G(); |
359 | G.pagesize = getpagesize(); | 361 | INIT_PAGESIZE(G.pagesize); |
360 | 362 | ||
361 | while ((opt = getopt(argc, argv, "iqpldc")) != -1) { | 363 | while ((opt = getopt(argc, argv, "iqpldc")) != -1) { |
362 | switch (opt) { | 364 | switch (opt) { |
@@ -523,7 +525,7 @@ int rpm2cpio_main(int argc UNUSED_PARAM, char **argv) | |||
523 | int rpm_fd; | 525 | int rpm_fd; |
524 | 526 | ||
525 | INIT_G(); | 527 | INIT_G(); |
526 | G.pagesize = getpagesize(); | 528 | INIT_PAGESIZE(G.pagesize); |
527 | 529 | ||
528 | rpm_fd = rpm_gettags(argv[1]); | 530 | rpm_fd = rpm_gettags(argv[1]); |
529 | 531 | ||