From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753537AbbC3TxK (ORCPT ); Mon, 30 Mar 2015 15:53:10 -0400 Received: from mail-ie0-f177.google.com ([209.85.223.177]:36042 "EHLO mail-ie0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752163AbbC3TxH (ORCPT ); Mon, 30 Mar 2015 15:53:07 -0400 Message-ID: <5519A9A0.4030503@gmail.com> Date: Mon, 30 Mar 2015 13:53:04 -0600 From: David Ahern User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: Arnaldo Carvalho de Melo CC: linux-kernel@vger.kernel.org, Don Zickus , Joe Mario , Jiri Olsa , Ingo Molnar , Peter Zijlstra Subject: Re: [PATCH v2 2/2] perf tool: Fix ppid for synthesized fork events References: <20150330194055.GG32560@kernel.org> In-Reply-To: <20150330194055.GG32560@kernel.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 3/30/15 1:40 PM, Arnaldo Carvalho de Melo wrote: >> @@ -81,6 +84,7 @@ static pid_t perf_event__get_comm_tgid(pid_t pid, char *comm, size_t len) >> >> name = strstr(bf, "Name:"); >> tgids = strstr(bf, "Tgid:"); >> + ppids = strstr(bf, "PPid:"); > > can't we make this: > > ppids = strstr(tgids, "PPid:"); > > To speed it up a teeny little bit? 8-) Sure, I thought about that as well, but it puts an assumption on order of the data in the file. Why have the assumption? > >> if (name) { >> name += 5; /* strlen("Name:") */ >> @@ -109,32 +113,51 @@ static pid_t perf_event__get_comm_tgid(pid_t pid, char *comm, size_t len) >> if (nl) >> *nl = '\0'; >> >> - tgid = atoi(tgids); >> + *tgid = atoi(tgids); >> >> } else >> pr_debug("Tgid: string not found for pid %d\n", pid); >> >> - return tgid; >> + if (ppids) { >> + ppids += 5; /* strlen("PPid:") */ >> + >> + while (*ppids && isspace(*ppids)) >> + ++ppids; > > The above could be simplified to: > > while (isspace(*ppids)) > ++ppids; sure. > > $ cat isspace.c > #include > #include > int main(void) { return printf("isspace('\\0')=%d\n", isspace('\0')); } > $ ./isspace > isspace('\0')=0 > $ > >> + nl = strchr(ppids, '\n'); >> + if (nl) >> + *nl = '\0'; > > We also don't need to find and zero this '\n', as: > > $ cat atoi.c > #include > #include > int main(void) { return printf("atoi(\"1234\\n\")=%d\n", > atoi("1234\n")); } > $ ./atoi > atoi("1234\n")=1234 > $ ok. another assumption on implementation. fine with taking it out. > > > >> + if (machine__is_host(machine)) { >> + if (perf_event__get_comm_ids(pid, event->comm.comm, >> + sizeof(event->comm.comm), >> + tgid, ppid) != 0) { >> + return -1; >> + } >> + } else >> + *tgid = machine->pid; > > Somebody, I think PeterZ and also Ingo, routinely asks for having {} on > the else part of an if that has {}, please do so. ack