From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751249AbdGMGt3 (ORCPT ); Thu, 13 Jul 2017 02:49:29 -0400 Received: from mail-eopbgr10096.outbound.protection.outlook.com ([40.107.1.96]:56492 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751161AbdGMGt1 (ORCPT ); Thu, 13 Jul 2017 02:49:27 -0400 From: Piotr Gregor To: Tom Zanussi , "rostedt@goodmis.org" CC: "tglx@linutronix.de" , "mhiramat@kernel.org" , "namhyung@kernel.org" , "vedang.patel@intel.com" , "linux-kernel@vger.kernel.org" , "linux-rt-users@vger.kernel.org" Subject: RE: [PATCH 01/32] tracing: Add hist_field_name() accessor Thread-Topic: [PATCH 01/32] tracing: Add hist_field_name() accessor Thread-Index: AQHS7s+sl+YnAvAXY0e0jVYkgp9E4qJRZ1vg Date: Thu, 13 Jul 2017 06:49:23 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: linux.intel.com; dkim=none (message not signed) header.d=none;linux.intel.com; dmarc=none action=none header.from=quadrant-systems.co.uk; x-originating-ip: [185.63.83.17] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;AM3PR02MB0389;7:OzeYCqbKU3bvF2W2LLInPWj/MeWwiHyKS6/Hf/7S49nX+wC5XSvo01aP7YC4/kvD/JBKvlaZAE7kJJigce9JTl1pZlGTUoz11etsnBfeY9N37ni49XFtAZqygYIN4x3MZHCWDAgZkB/2euuckxb2N2bKn3yM52b6yDl0XqDEjijuwn0SJq5wYMt7l9uKWen5qzLTOKwdsYqjaSZxsJnArY0oy+W45h9sJze7ibFpmmSsQKtcyn6CKZKQ05jRJAM3idi9SCoQS/bk9ry/NQPikSY7+CxuUWV6uUKVQGZxhUSZ5JP/Z4iegvGeiNupySSDf2EY+vCBUXjFcm/Yv0hyKffkcMvqjX1RzreymOZAad1Xd44KuDOx2ktIFetRBjUqvk96wh2Ewh5L3g71/4rTsEsv64UdV6YKyojS7XDngsKB7VDWOyCN3dup2FjZK5NfLVvmtCWAY9Fqc1lNyVvF3QSH2Z6i2Fe4169CYZpP9VSOtycaf7nXgA+IXvX5uYlYf56FSgSxOnXI4FM1XyWcZ/92JJMyZ14ELFEXFFJX/4i4tV77PxO2iDISwfnMChppcXTXoGX2+v9X5DpPUATYbgdntUPZiuvgI3ol70zF/3pmn+mlIlXjNJJybHorGGaRVkr7IDguUJ3l/l2bmW7YedvAEpb1jvz/KJf1L20nWJnI+PnU1pJmvwK7CCeh8usi3HHi6TzY9TYqxaAWlRNnOXMUkk1dA5m/97HhJlsfLmD0aYtgJXYNSJFurFU2NTzkNIu/rZA/IYnJZxS0OO7R1+/CJYRWr6G6G+QF53SC3tA= x-ms-office365-filtering-correlation-id: 32cb84d7-fb53-470d-b138-08d4c9bb4be8 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(300000503095)(300135400095)(2017052603031)(201703131423075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:AM3PR02MB0389; x-ms-traffictypediagnostic: AM3PR02MB0389: x-exchange-antispam-report-test: UriScan:(236129657087228)(9452136761055)(148574349560750)(167848164394848)(228905959029699); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(2017060910075)(5005006)(8121501046)(3002001)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123558100)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(2016111802025)(6072148)(6043046)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:AM3PR02MB0389;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:AM3PR02MB0389; x-forefront-prvs: 0367A50BB1 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(6009001)(39400400002)(39840400002)(39450400003)(39410400002)(13464003)(2501003)(3280700002)(9686003)(5250100002)(3660700001)(102836003)(6116002)(3846002)(38730400002)(6246003)(33656002)(5660300001)(7696004)(6506006)(189998001)(74482002)(76176999)(50986999)(53936002)(229853002)(53546010)(54356999)(14454004)(6436002)(8936002)(4326008)(478600001)(2906002)(8676002)(7736002)(6306002)(575784001)(305945005)(54906002)(86362001)(25786009)(99286003)(42882006)(66066001)(74316002)(2950100002)(2900100001)(55016002)(966005)(81166006)(422495003);DIR:OUT;SFP:1102;SCL:1;SRVR:AM3PR02MB0389;H:AM3PR02MB130.eurprd02.prod.outlook.com;FPR:;SPF:None;MLV:sfv;LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 X-OriginatorOrg: quadrant-systems.co.uk X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jul 2017 06:49:23.5222 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 69ce0fcd-814d-4ea8-9955-1404d9637d65 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR02MB0389 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by nfs id v6D6nYW8031521 Hi Tom, Which repo and branch do you push these changes into? cheers, Piotr -----Original Message----- From: linux-rt-users-owner@vger.kernel.org [mailto:linux-rt-users-owner@vger.kernel.org] On Behalf Of Tom Zanussi Sent: 26 June 2017 23:49 To: rostedt@goodmis.org Cc: tglx@linutronix.de; mhiramat@kernel.org; namhyung@kernel.org; vedang.patel@intel.com; linux-kernel@vger.kernel.org; linux-rt-users@vger.kernel.org; Tom Zanussi Subject: [PATCH 01/32] tracing: Add hist_field_name() accessor In preparation for hist_fields that won't be strictly based on trace_event_fields, add a new hist_field_name() accessor to allow that flexibility and update associated users. Signed-off-by: Tom Zanussi --- kernel/trace/trace_events_hist.c | 68 +++++++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 22 deletions(-) diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c index 1c21d0e..91ffc39 100644 --- a/kernel/trace/trace_events_hist.c +++ b/kernel/trace/trace_events_hist.c @@ -146,6 +146,23 @@ struct hist_trigger_data { struct tracing_map *map; }; +static const char *hist_field_name(struct hist_field *field, + unsigned int level) +{ + const char *field_name = ""; + + if (level > 1) + return field_name; + + if (field->field) + field_name = field->field->name; + + if (field_name == NULL) + field_name = ""; + + return field_name; +} + static hist_field_fn_t select_value_fn(int field_size, int field_is_signed) { hist_field_fn_t fn = NULL; @@ -653,7 +670,6 @@ static int is_descending(const char *str) static int create_sort_keys(struct hist_trigger_data *hist_data) { char *fields_str = hist_data->attrs->sort_key_str; - struct ftrace_event_field *field = NULL; struct tracing_map_sort_key *sort_key; int descending, ret = 0; unsigned int i, j; @@ -670,7 +686,9 @@ static int create_sort_keys(struct hist_trigger_data *hist_data) } for (i = 0; i < TRACING_MAP_SORT_KEYS_MAX; i++) { + struct hist_field *hist_field; char *field_str, *field_name; + const char *test_name; sort_key = &hist_data->sort_keys[i]; @@ -703,8 +721,11 @@ static int create_sort_keys(struct hist_trigger_data *hist_data) } for (j = 1; j < hist_data->n_fields; j++) { - field = hist_data->fields[j]->field; - if (field && (strcmp(field_name, field->name) == 0)) { + hist_field = hist_data->fields[j]; + test_name = hist_field_name(hist_field, 0); + if (test_name == NULL) + continue; + if (strcmp(field_name, test_name) == 0) { sort_key->field_idx = j; descending = is_descending(field_str); if (descending < 0) { @@ -952,6 +973,7 @@ static void hist_trigger_stacktrace_print(struct seq_file *m, struct hist_field *key_field; char str[KSYM_SYMBOL_LEN]; bool multiline = false; + const char *field_name; unsigned int i; u64 uval; @@ -963,26 +985,27 @@ static void hist_trigger_stacktrace_print(struct seq_file *m, if (i > hist_data->n_vals) seq_puts(m, ", "); + field_name = hist_field_name(key_field, 0); + if (key_field->flags & HIST_FIELD_FL_HEX) { uval = *(u64 *)(key + key_field->offset); - seq_printf(m, "%s: %llx", - key_field->field->name, uval); + seq_printf(m, "%s: %llx", field_name, uval); } else if (key_field->flags & HIST_FIELD_FL_SYM) { uval = *(u64 *)(key + key_field->offset); sprint_symbol_no_offset(str, uval); - seq_printf(m, "%s: [%llx] %-45s", - key_field->field->name, uval, str); + seq_printf(m, "%s: [%llx] %-45s", field_name, + uval, str); } else if (key_field->flags & HIST_FIELD_FL_SYM_OFFSET) { uval = *(u64 *)(key + key_field->offset); sprint_symbol(str, uval); - seq_printf(m, "%s: [%llx] %-55s", - key_field->field->name, uval, str); + seq_printf(m, "%s: [%llx] %-55s", field_name, + uval, str); } else if (key_field->flags & HIST_FIELD_FL_EXECNAME) { char *comm = elt->private_data; uval = *(u64 *)(key + key_field->offset); - seq_printf(m, "%s: %-16s[%10llu]", - key_field->field->name, comm, uval); + seq_printf(m, "%s: %-16s[%10llu]", field_name, + comm, uval); } else if (key_field->flags & HIST_FIELD_FL_SYSCALL) { const char *syscall_name; @@ -991,8 +1014,8 @@ static void hist_trigger_stacktrace_print(struct seq_file *m, if (!syscall_name) syscall_name = "unknown_syscall"; - seq_printf(m, "%s: %-30s[%3llu]", - key_field->field->name, syscall_name, uval); + seq_printf(m, "%s: %-30s[%3llu]", field_name, + syscall_name, uval); } else if (key_field->flags & HIST_FIELD_FL_STACKTRACE) { seq_puts(m, "stacktrace:\n"); hist_trigger_stacktrace_print(m, @@ -1000,15 +1023,14 @@ static void hist_trigger_stacktrace_print(struct seq_file *m, HIST_STACKTRACE_DEPTH); multiline = true; } else if (key_field->flags & HIST_FIELD_FL_LOG2) { - seq_printf(m, "%s: ~ 2^%-2llu", key_field->field->name, + seq_printf(m, "%s: ~ 2^%-2llu", field_name, *(u64 *)(key + key_field->offset)); } else if (key_field->flags & HIST_FIELD_FL_STRING) { - seq_printf(m, "%s: %-50s", key_field->field->name, + seq_printf(m, "%s: %-50s", field_name, (char *)(key + key_field->offset)); } else { uval = *(u64 *)(key + key_field->offset); - seq_printf(m, "%s: %10llu", key_field->field->name, - uval); + seq_printf(m, "%s: %10llu", field_name, uval); } } @@ -1021,13 +1043,13 @@ static void hist_trigger_stacktrace_print(struct seq_file *m, tracing_map_read_sum(elt, HITCOUNT_IDX)); for (i = 1; i < hist_data->n_vals; i++) { + field_name = hist_field_name(hist_data->fields[i], 0); + if (hist_data->fields[i]->flags & HIST_FIELD_FL_HEX) { - seq_printf(m, " %s: %10llx", - hist_data->fields[i]->field->name, + seq_printf(m, " %s: %10llx", field_name, tracing_map_read_sum(elt, i)); } else { - seq_printf(m, " %s: %10llu", - hist_data->fields[i]->field->name, + seq_printf(m, " %s: %10llu", field_name, tracing_map_read_sum(elt, i)); } } @@ -1142,7 +1164,9 @@ static const char *get_hist_field_flags(struct hist_field *hist_field) static void hist_field_print(struct seq_file *m, struct hist_field *hist_field) { - seq_printf(m, "%s", hist_field->field->name); + const char *field_name = hist_field_name(hist_field, 0); + + seq_printf(m, "%s", field_name); if (hist_field->flags) { const char *flags_str = get_hist_field_flags(hist_field); -- 1.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html