aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-03-19 14:34:30 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-03-19 14:34:30 +0100
commitbcda0042e2313d65a835b874c78bf215d743a844 (patch)
tree774e7772ac513cd18ba8d394db44839ea9bfe2d9 /libbb
parent892d4b6b3d7e9950ff3708ca957e1e0590dd5a2d (diff)
downloadbusybox-w32-bcda0042e2313d65a835b874c78bf215d743a844.tar.gz
busybox-w32-bcda0042e2313d65a835b874c78bf215d743a844.tar.bz2
busybox-w32-bcda0042e2313d65a835b874c78bf215d743a844.zip
libbb/copyfd.c: don't mmap a largish buffer if we only want to copy a few kb
function old new delta bb_full_fd_action 283 295 +12 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
-rw-r--r--libbb/copyfd.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libbb/copyfd.c b/libbb/copyfd.c
index c5f8b5b87..f42eb7623 100644
--- a/libbb/copyfd.c
+++ b/libbb/copyfd.c
@@ -22,6 +22,8 @@ static off_t bb_full_fd_action(int src_fd, int dst_fd, off_t size)
22 char *buffer; 22 char *buffer;
23 int buffer_size; 23 int buffer_size;
24 24
25 if (size > 0 && size <= 4 * 1024)
26 goto use_small_buf;
25 /* We want page-aligned buffer, just in case kernel is clever 27 /* We want page-aligned buffer, just in case kernel is clever
26 * and can do page-aligned io more efficiently */ 28 * and can do page-aligned io more efficiently */
27 buffer = mmap(NULL, CONFIG_FEATURE_COPYBUF_KB * 1024, 29 buffer = mmap(NULL, CONFIG_FEATURE_COPYBUF_KB * 1024,
@@ -30,6 +32,7 @@ static off_t bb_full_fd_action(int src_fd, int dst_fd, off_t size)
30 /* ignored: */ -1, 0); 32 /* ignored: */ -1, 0);
31 buffer_size = CONFIG_FEATURE_COPYBUF_KB * 1024; 33 buffer_size = CONFIG_FEATURE_COPYBUF_KB * 1024;
32 if (buffer == MAP_FAILED) { 34 if (buffer == MAP_FAILED) {
35 use_small_buf:
33 buffer = alloca(4 * 1024); 36 buffer = alloca(4 * 1024);
34 buffer_size = 4 * 1024; 37 buffer_size = 4 * 1024;
35 } 38 }