From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752277AbbDUGj7 (ORCPT ); Tue, 21 Apr 2015 02:39:59 -0400 Received: from LGEMRELSE6Q.lge.com ([156.147.1.121]:39002 "EHLO lgemrelse6q.lge.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752040AbbDUGj6 (ORCPT ); Tue, 21 Apr 2015 02:39:58 -0400 X-Original-SENDERIP: 10.177.220.203 X-Original-MAILFROM: namhyung@kernel.org Date: Tue, 21 Apr 2015 15:34:47 +0900 From: Namhyung Kim To: Arnaldo Carvalho de Melo Cc: Ingo Molnar , Peter Zijlstra , Jiri Olsa , LKML , David Ahern Subject: Re: [PATCH 3/7] perf tools: Move TUI-specific fields to struct hist_entry_tui Message-ID: <20150421063447.GD1905@sejong> References: <1429534850-13526-1-git-send-email-namhyung@kernel.org> <1429534850-13526-4-git-send-email-namhyung@kernel.org> <20150420194411.GI11111@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20150420194411.GI11111@kernel.org> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Apr 20, 2015 at 04:44:11PM -0300, Arnaldo Carvalho de Melo wrote: > Em Mon, Apr 20, 2015 at 10:00:46PM +0900, Namhyung Kim escreveu: > > +++ b/tools/perf/ui/browsers/hists.c > > @@ -61,7 +61,7 @@ static int hist_browser__get_folding(struct hist_browser *browser) > > rb_entry(nd, struct hist_entry, rb_node); > > > if (he->ms.unfolded) > > - unfolded_rows += he->nr_rows; > > + unfolded_rows += he->tui.nr_rows; > > To avoid all these changes, I wonder if we can't use unamed structs in > addition to the unnamed union? But diff code uses named struct. Does it support a mixed union including named and unnamed members? Hmm.. looks like it is. #include #include struct hist_entry { union { struct /* tui */ { int nr_rows; int row_offset; /* other fields */ }; struct /* diff */ { bool computed; /* other fields */ } diff; }; }; int main(int argc, char *argv[]) { struct hist_entry he = { .nr_rows = 11, .row_offset = 19, }; printf("he.nr_rows=%d, he.row_offset=%d, he.diff.computed=%d\n", he.nr_rows, he.row_offset, he.diff.computed); } namhyung@sejong:tmp$ make mixed cc mixed.c -o mixed namhyung@sejong:tmp$ ./mixed he.nr_rows=11, he.row_offset=19, he.diff.computed=11 OK, I'll change it to unnamed struct. Thanks, Namhyung > > Like this what is done in include/net/sock.h, struct sock_common, and > here: > > [root@zoo ~]# cat unnamed_struct_union.c > #include > #include > > struct hist_entry { > union { > struct /* tui */ { > int nr_rows; > int row_offset; > /* other fields */ > }; > struct /* diff */ { > bool computed; > /* other fields */ > }; > }; > }; > > int main(int argc, char *argv[]) > { > struct hist_entry he = { .nr_rows = 11, .row_offset = 19, }; > > printf("he.nr_rows=%d, he.row_offset=%d\n", he.nr_rows, > he.row_offset); > } > [root@zoo ~]# make unnamed_struct_union > cc unnamed_struct_union.c -o unnamed_struct_union > [root@zoo ~]# ./unnamed_struct_union > he.nr_rows=11, he.row_offset=19 > [root@zoo ~]# > > - Arnaldo > -- > 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/