Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758827Ab0DAUEs (ORCPT ); Thu, 1 Apr 2010 16:04:48 -0400 Received: from smtp-outbound-2.vmware.com ([65.115.85.73]:14840 "EHLO smtp-outbound-2.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758769Ab0DAUEr (ORCPT ); Thu, 1 Apr 2010 16:04:47 -0400 Date: Thu, 1 Apr 2010 13:04:46 -0700 From: Andrew Isaacson To: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] perf: timechart: handle pthreads correctly Message-ID: <20100401200446.GB8434@vmware.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="82I3+IH0IqGh5yIs" Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 32924 Lines: 479 --82I3+IH0IqGh5yIs Content-Type: text/plain; charset=us-ascii Content-Disposition: inline pthreads applications have multiple processes with the same "pid" but different "tid" values. This confuses timechart, because it's using the "pid" value to track processes. Switch to using "tid" to avoid this confusion. For non-pthreads applications tid == pid so there's no downside. Signed-off-by: Andy Isaacson --- I've attached a before.svg.gz and after.svg.gz showing the failure. diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c index 0d4d8ff..5b925de 100644 --- a/tools/perf/builtin-timechart.c +++ b/tools/perf/builtin-timechart.c @@ -286,7 +286,7 @@ static int process_comm_event(event_t *event, struct perf_session *session __use static int process_fork_event(event_t *event, struct perf_session *session __used) { - pid_fork(event->fork.pid, event->fork.ppid, event->fork.time); + pid_fork(event->fork.tid, event->fork.ppid, event->fork.time); return 0; } --82I3+IH0IqGh5yIs Content-Type: application/octet-stream Content-Disposition: attachment; filename="after.svg.gz" Content-Transfer-Encoding: base64 H4sICNv6tEsAA2FmdGVyLnN2ZwDMXVFvHDeSfs+v6NOTDSgUq0gWScfOXi4Bcn64vcVeDnlY 7INij21dZEnQyLG9h/3vV9UeSeT09Ki6xfZNAAFJWiqyPhaLVUXy4/M/fXp/3v2xul6fXV68 OAJjj7r1zenF69Pzy4vVi6OLy6M/fd9983z9x9vu49nrm3f8O9byL71bnb19d/PiyGX+j+Lv 4ahjiRfrF0fvbm6unp2cfPz40Xx05vL67QnyX56wpKPvv3n+evVm/f03Xfd8ffP5fNXdfL7i 1m5Wn25OXq3XR/KFv/3L33786Ydffvhb/19dd716ddPd/fO/3NHry99X3/b9etbBd90/i180 V9eXr1brtfzim7Pz82fXb397Askeb36eftf/728vr05fnd18fmZN/q6WyAK7zf/p/7jr7PHm h//4n92OxnB2Y3ZCY+vT91eMWaXZ7e9jCMPG0iMa++388tXvq9dVY9xI8ftbjYVHNPbx9Ozm 7OJt3Rj6YwS/u7HHaPbrDy9/efnnnwea9Y35NGyMHtHYq6sPt2Z7byAZjzc/w8Zwu7F7YL/8 Mabjzc/QGnkK32wZSP37D8O41X3oBt2/xYp/VFawJRF3S4SI8jNHohuR6Kz8zJHod0vsUpKf ORLDiEQvNjcLRxqROGF+3kk8P7tYldZT2Fs/2l/kPr2TMG5BeCf173/vvfnzk97Ts+s/+eL7 n0tj3Sd4cWSN3fxz1H3m/4Zg5F8/4dYn3Cw3vaAXR+VkKGfS9rThvz0pm/NgHAbwKeOgvfrb eIOI7Gq//AwatDHUDSY0FCzmmPygwfpbowYBnckxeE+RBi1ufWzVJAXjrA05UBo2WX9s1CRa MoQhsiZDw9n62KpJH00ONmUXhraz9bFVkykbjGQ9+qH1bH1s1KRzvNZZgAwuDprc+tiqyQgm IznPU2HYZP2xUZMenNlMddjhB6qPrTxP8CZEIpfADZusP7bSMgeTLcQUbRg2WX9s1GRw0SAS T4M8NJ+tj62ajMmEgDbxgA2brD82apIgmxQjOh6vQZNbH1s1SWDQoksYh+az9bFRk9GiCRiD Yxc+aHLrY6smvTMpICUbhuaz9bFVkykYiDFh9kPz2frYLCYgs1n3h+az9bGR90kUTcIEbCBD 89n62EjLbLOB4HiJwqH5bH1s1WSwxjNw7L2H5rP1sVWTGUyyjoMNGAYiWx8f12RfAfnEYfHR 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 7qG0YPMhbgR8D8W/ffk3OrP/B6qruuYetQEA --82I3+IH0IqGh5yIs Content-Type: application/octet-stream Content-Disposition: attachment; filename="before.svg.gz" Content-Transfer-Encoding: base64 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 --82I3+IH0IqGh5yIs-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/