aboutsummaryrefslogtreecommitdiff
path: root/archival
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2020-12-14 18:49:23 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2020-12-14 18:54:30 +0100
commitc7b858ff8d2e8b2d785f74b2d319bc9c839f4faa (patch)
tree9ad109d5999444dfb3a281678b6b63d2570a76cd /archival
parentfd3c512f88d43e6633bd3c3110cfa0bb321adaa8 (diff)
downloadbusybox-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.c10
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