From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Cc: Franck Bui-Huu <vagabon.xyz@gmail.com>,
lkml <linux-kernel@vger.kernel.org>,
2nddept-manager@sdl.hitachi.co.jp
Subject: Re: [PATCH] perf-probe: rewrite find_lazy_match_lines() by using getline(3)
Date: Mon, 07 Feb 2011 18:32:27 +0900 [thread overview]
Message-ID: <4D4FBC2B.5000108@hitachi.com> (raw)
In-Reply-To: <4D2ED322.4040508@hitachi.com>
Hi Arnaldo,
Could you merge this patch into your perf/core tree?
This makes code very simple and easy to read :-)
Thank you,
(2011/01/13 19:25), Masami Hiramatsu wrote:
> (2011/01/13 19:18), Franck Bui-Huu wrote:
>> From: Franck Bui-Huu <fbuihuu@gmail.com>
>>
>> Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com>
>
> Looks very nice! :)
>
> Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
>
> Thanks!
>
>> ---
>> tools/perf/util/probe-finder.c | 70 +++++++++++++++------------------------
>> 1 files changed, 27 insertions(+), 43 deletions(-)
>>
>> diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
>> index ddf4d45..4221738 100644
>> --- a/tools/perf/util/probe-finder.c
>> +++ b/tools/perf/util/probe-finder.c
>> @@ -1092,51 +1092,38 @@ static int find_probe_point_by_line(struct probe_finder *pf)
>> static int find_lazy_match_lines(struct list_head *head,
>> const char *fname, const char *pat)
>> {
>> - char *fbuf, *p1, *p2;
>> - int fd, line, nlines = -1;
>> - struct stat st;
>> -
>> - fd = open(fname, O_RDONLY);
>> - if (fd < 0) {
>> - pr_warning("Failed to open %s: %s\n", fname, strerror(-fd));
>> + FILE *fp;
>> + char *line = NULL;
>> + size_t line_len;
>> + ssize_t len;
>> + int count = 0, linenum = 1;
>> +
>> + fp = fopen(fname, "r");
>> + if (!fp) {
>> + pr_warning("Failed to open %s: %s\n", fname, strerror(errno));
>> return -errno;
>> }
>>
>> - if (fstat(fd, &st) < 0) {
>> - pr_warning("Failed to get the size of %s: %s\n",
>> - fname, strerror(errno));
>> - nlines = -errno;
>> - goto out_close;
>> - }
>> -
>> - nlines = -ENOMEM;
>> - fbuf = malloc(st.st_size + 2);
>> - if (fbuf == NULL)
>> - goto out_close;
>> - if (read(fd, fbuf, st.st_size) < 0) {
>> - pr_warning("Failed to read %s: %s\n", fname, strerror(errno));
>> - nlines = -errno;
>> - goto out_free_fbuf;
>> - }
>> - fbuf[st.st_size] = '\n'; /* Dummy line */
>> - fbuf[st.st_size + 1] = '\0';
>> - p1 = fbuf;
>> - line = 1;
>> - nlines = 0;
>> - while ((p2 = strchr(p1, '\n')) != NULL) {
>> - *p2 = '\0';
>> - if (strlazymatch(p1, pat)) {
>> - line_list__add_line(head, line);
>> - nlines++;
>> + while ((len = getline(&line, &line_len, fp)) > 0) {
>> +
>> + if (line[len - 1] == '\n')
>> + line[len - 1] = '\0';
>> +
>> + if (strlazymatch(line, pat)) {
>> + line_list__add_line(head, linenum);
>> + count++;
>> }
>> - line++;
>> - p1 = p2 + 1;
>> - }
>> -out_free_fbuf:
>> - free(fbuf);
>> -out_close:
>> - close(fd);
>> - return nlines;
>> + linenum++;
>> + }
>> +
>> + if (ferror(fp))
>> + count = -errno;
>> + free(line);
>> + fclose(fp);
>> +
>> + if (count == 0)
>> + pr_debug("No matched lines found in %s.\n", fname);
>> + return count;
>> }
>>
>> /* Find probe points from lazy pattern */
>> @@ -1154,10 +1141,7 @@ static int find_probe_point_lazy(Dwarf_Die *sp_die, struct probe_finder *pf)
>> /* Matching lazy line pattern */
>> ret = find_lazy_match_lines(&pf->lcache, pf->fname,
>> pf->pev->point.lazy_line);
>> - if (ret == 0) {
>> - pr_debug("No matched lines found in %s.\n", pf->fname);
>> - return 0;
>> - } else if (ret < 0)
>> + if (ret <= 0)
>> return ret;
>> }
>>
>
>
--
Masami HIRAMATSU
2nd Dept. Linux Technology Center
Hitachi, Ltd., Systems Development Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com
next prev parent reply other threads:[~2011-02-07 9:32 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-13 10:18 [PATCH] perf-probe: rewrite find_lazy_match_lines() by using getline(3) Franck Bui-Huu
2011-01-13 10:25 ` Masami Hiramatsu
2011-02-07 9:32 ` Masami Hiramatsu [this message]
2011-02-07 12:31 ` Arnaldo Carvalho de Melo
2011-02-08 15:16 ` [tip:perf/core] perf probe: Rewrite " tip-bot for Franck Bui-Huu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D4FBC2B.5000108@hitachi.com \
--to=masami.hiramatsu.pt@hitachi.com \
--cc=2nddept-manager@sdl.hitachi.co.jp \
--cc=acme@ghostprotocols.net \
--cc=linux-kernel@vger.kernel.org \
--cc=vagabon.xyz@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.