From patchwork Thu Jan 5 18:44:57 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Wagner X-Patchwork-Id: 134530 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id E50741007D7 for ; Fri, 6 Jan 2012 05:46:17 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 3CC6F28549; Thu, 5 Jan 2012 19:45:54 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fMhI8PvJcZHz; Thu, 5 Jan 2012 19:45:54 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 536AC28552; Thu, 5 Jan 2012 19:45:38 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 27B782857A for ; Thu, 5 Jan 2012 19:45:35 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jkkXO4qI9G1Z for ; Thu, 5 Jan 2012 19:45:34 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail.free-electrons.com (mail.free-electrons.com [88.190.12.23]) by theia.denx.de (Postfix) with ESMTP id E1EFC2855D for ; Thu, 5 Jan 2012 19:45:24 +0100 (CET) Received: by mail.free-electrons.com (Postfix, from userid 106) id 7F0011C6; Thu, 5 Jan 2012 19:40:48 +0100 (CET) Received: from localhost.localdomain (bon31-3-82-226-48-55.fbx.proxad.net [82.226.48.55]) by mail.free-electrons.com (Postfix) with ESMTPSA id 3DC0B22F; Thu, 5 Jan 2012 19:40:37 +0100 (CET) From: David Wagner To: u-boot@lists.denx.de Date: Thu, 5 Jan 2012 19:44:57 +0100 Message-Id: <1325789099-9260-6-git-send-email-david.wagner@free-electrons.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1325789099-9260-1-git-send-email-david.wagner@free-electrons.com> References: <20120105162831.E91BE1FD3DA@gemini.denx.de> <1325789099-9260-1-git-send-email-david.wagner@free-electrons.com> Cc: Thomas Petazzoni Subject: [U-Boot] [PATCHv2 6/8] mkenvimage: Use mmap() when reading from a regular file X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de Signed-off-by: David Wagner --- tools/mkenvimage.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-) diff --git a/tools/mkenvimage.c b/tools/mkenvimage.c index 6db2b21..58f1d0b 100644 --- a/tools/mkenvimage.c +++ b/tools/mkenvimage.c @@ -38,6 +38,7 @@ #include "compiler.h" #include #include +#include #include "u-boot/crc.h" #include @@ -209,14 +210,16 @@ int main(int argc, char **argv) } filesize = txt_file_stat.st_size; - /* Read the raw input file and transform it */ - filebuf = malloc(sizeof(*envptr) * filesize); - ret = read(txt_fd, filebuf, sizeof(*envptr) * filesize); - if (ret != sizeof(*envptr) * filesize) { - fprintf(stderr, "Can't read the whole input file\n"); + + filebuf = mmap(NULL, sizeof(*envptr) * filesize, PROT_READ, + MAP_PRIVATE, txt_fd, 0); + ret = close(txt_fd); + if (filebuf == MAP_FAILED) { + fprintf(stderr, "mmap (%ld bytes) failed: %s\n", + sizeof(*envptr) * filesize, + strerror(errno)); return EXIT_FAILURE; } - ret = close(txt_fd); } /* The +1 is for the additionnal ending \0. See below. */ if (filesize + 1 > envsize) {