----- On Nov 17, 2020, at 5:16 PM, rostedt rostedt@xxxxxxxxxxx wrote: > On Tue, 17 Nov 2020 16:22:23 -0500 (EST) > Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx> wrote: > >> If we don't call the stub, then there is no point in having the stub at >> all, and we should just compare to a constant value, e.g. 0x1UL. As far >> as I can recall, comparing with a small immediate constant is more efficient >> than comparing with a loaded value on many architectures. > > Why 0x1UL, and not just set it to NULL. > > do { \ > it_func = (it_func_ptr)->func; \ > __data = (it_func_ptr)->data; \ > if (likely(it_func)) \ > ((void(*)(void *, proto))(it_func))(__data, args); \ > } while ((++it_func_ptr)->func); Because of this end-of-loop condition ^ which is also testing for a NULL func. So if we reach a stub, we end up stopping iteration and not firing the following tracepoint probes. Thanks, Mathieu > > > -- Steve -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com