]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
tools: copyfile: use 64k instead of 512 buffer
authorAhelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Tue, 9 Apr 2024 12:14:34 +0000 (14:14 +0200)
committerTom Rini <trini@konsulko.com>
Wed, 17 Apr 2024 23:06:01 +0000 (17:06 -0600)
This is a trivial but significant optimization:
mkimage took >200ms (and 49489 writes (of which 49456 512)),
now it takes  110ms (and   419 writes (of which   386 64k)).

sendfile is much more appropriate for this and is done in one syscall,
but doesn't bring any significant speedups over 64k r/w
at the 13M size ranges, so there's no need to introduce
#if __linux__
while((size = sendfile(fd_dst, fd_src, NULL, 128 * 1024 * 1024)) > 0)
;
if(size != -1) {
ret = 0;
goto out;
}
#endif

Also extract the buffer size to a macro.

Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Reviewed-by: Dragan Simic <dsimic@manjaro.org>
tools/fit_common.c

index 2d417d47198888597bf27db5f2be4b79ff366e5e..d1cde16c1cb8aa496e4d107348c6749fcb8d2243 100644 (file)
@@ -23,6 +23,8 @@
 #include <image.h>
 #include <u-boot/crc.h>
 
+#define COPYFILE_BUFSIZE (64 * 1024)
+
 void fit_print_header(const void *fit, struct image_tool_params *params)
 {
        fit_print_contents(fit);
@@ -145,14 +147,14 @@ int copyfile(const char *src, const char *dst)
                goto out;
        }
 
-       buf = calloc(1, 512);
+       buf = calloc(1, COPYFILE_BUFSIZE);
        if (!buf) {
                printf("Can't allocate buffer to copy file\n");
                goto out;
        }
 
        while (1) {
-               size = read(fd_src, buf, 512);
+               size = read(fd_src, buf, COPYFILE_BUFSIZE);
                if (size < 0) {
                        printf("Can't read file %s\n", src);
                        goto out;