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 = { > >>>> > >