lkml.org 
[lkml]   [2013]   [Dec]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] perf tools: Fine tune readn function
    Commit-ID:  838d14520267769648fb2fc2a637107a1d102590
    Gitweb: http://git.kernel.org/tip/838d14520267769648fb2fc2a637107a1d102590
    Author: Jiri Olsa <jolsa@redhat.com>
    AuthorDate: Thu, 28 Nov 2013 11:30:15 +0100
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Mon, 2 Dec 2013 09:22:46 -0300

    perf tools: Fine tune readn function

    Added a 'left' variable to make the flow clearer, and added a debug
    check for the return value - returning 'n' is more obvious.

    Added small comment for readn.

    Signed-off-by: Jiri Olsa <jolsa@redhat.com>
    Original-patch-by: Ingo Molnar <mingo@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/1385634619-8129-4-git-send-email-jolsa@redhat.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/util/util.c | 16 +++++++++++-----
    1 file changed, 11 insertions(+), 5 deletions(-)

    diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c
    index 9440481..6ea0b4a 100644
    --- a/tools/perf/util/util.c
    +++ b/tools/perf/util/util.c
    @@ -6,6 +6,7 @@
    #endif
    #include <stdio.h>
    #include <stdlib.h>
    +#include <linux/kernel.h>

    /*
    * XXX We need to find a better place for these things...
    @@ -151,21 +152,26 @@ unsigned long convert_unit(unsigned long value, char *unit)
    return value;
    }

    +/*
    + * Read exactly 'n' bytes or return an error.
    + */
    ssize_t readn(int fd, void *buf, size_t n)
    {
    void *buf_start = buf;
    + size_t left = n;

    - while (n) {
    - ssize_t ret = read(fd, buf, n);
    + while (left) {
    + ssize_t ret = read(fd, buf, left);

    if (ret <= 0)
    return ret;

    - n -= ret;
    - buf += ret;
    + left -= ret;
    + buf += ret;
    }

    - return buf - buf_start;
    + BUG_ON((size_t)(buf - buf_start) != n);
    + return n;
    }

    size_t hex_width(u64 v)

    \
     
     \ /
      Last update: 2013-12-04 18:41    [W:2.574 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site