From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752694AbcF3XHx (ORCPT ); Thu, 30 Jun 2016 19:07:53 -0400 Received: from LGEAMRELO13.lge.com ([156.147.23.53]:60961 "EHLO lgeamrelo13.lge.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752043AbcF3XHv (ORCPT ); Thu, 30 Jun 2016 19:07:51 -0400 X-Original-SENDERIP: 156.147.1.127 X-Original-MAILFROM: byungchul.park@lge.com X-Original-SENDERIP: 10.177.222.33 X-Original-MAILFROM: byungchul.park@lge.com Date: Fri, 1 Jul 2016 08:06:08 +0900 From: Byungchul Park To: xinhui Cc: peterz@infradead.org, mingo@kernel.org, linux-kernel@vger.kernel.org, npiggin@suse.de, walken@google.com, ak@suse.de Subject: Re: [RFC 12/12] x86/dumpstack: Optimize save_stack_trace Message-ID: <20160630230608.GS2279@X58A-UD3R> References: <1466398527-1122-1-git-send-email-byungchul.park@lge.com> <1466398527-1122-13-git-send-email-byungchul.park@lge.com> <57679B57.40905@linux.vnet.ibm.com> <000101d1cac8$6f321c40$4d9654c0$@lge.com> <20160629124343.GQ2279@X58A-UD3R> <5774F6B7.5050200@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5774F6B7.5050200@linux.vnet.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jun 30, 2016 at 06:38:47PM +0800, xinhui wrote: > >>>>+static int save_stack_end(void *data) > >>>>+{ > >>>>+ struct stack_trace *trace = data; > >>>>+ return trace->nr_entries >= trace->max_entries; > >>>>+} > >>>>+ > >>>> static const struct stacktrace_ops save_stack_ops = { > >>>> .stack = save_stack_stack, > >>>> .address = save_stack_address, > >>>then why not check the return value of ->address(), -1 indicate there is > >>>no room to store any pointer. > >> > >>Hello, > >> > >>Indeed. It also looks good to me even though it has to propagate the condition > >>between callback functions. I will modify it if it's better. > > > >Do you also think it would be better to make it propagate the result of > >->address() rather than add a new callback, say, end_walk? > > > It's up to you. In my opinion, end_walk is better for reading. I also prefer the way this patch works. > >> > >>Thank you. > >>Byungchul > >> > >>> > >>>> .walk_stack = print_context_stack, > >>>>+ .end_walk = save_stack_end, > >>>> }; > >>>> > >>>> static const struct stacktrace_ops save_stack_ops_nosched = { > >>>> > >