[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 2/6] sched: Remove dependency on __LINE__ for release builds
When using LivePatch, use of __LINE__ can generate spurious changes in functions due to embedded line numbers. For release builds with LivePatch enabled, remove the use of these line numbers in domain_crash*() and print the current text address instead. Signed-off-by: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx> --- Changes in v2: * Simply macros. * Use %pS. xen/include/xen/sched.h | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index 0929c0b..f385de3 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -625,20 +625,28 @@ void vcpu_end_shutdown_deferral(struct vcpu *v); * from any processor. */ void __domain_crash(struct domain *d); -#define domain_crash(d) do { \ - printk("domain_crash called from %s:%d\n", __FILE__, __LINE__); \ - __domain_crash(d); \ + +#if defined(NDEBUG) && defined(CONFIG_LIVEPATCH) +#define _domain_crash(func, call) do { \ + printk(#func " called from %pS\n", current_text_addr()); \ + call; \ +} while (0) +#else +#define _domain_crash(func, call) do { \ + printk(#func " called from %s:%d\n", __FILE__, __LINE__); \ + call; \ } while (0) +#endif + +#define domain_crash(d) _domain_crash(domain_crash, __domain_crash(d)) /* * Mark current domain as crashed and synchronously deschedule from the local * processor. This function never returns. */ void noreturn __domain_crash_synchronous(void); -#define domain_crash_synchronous() do { \ - printk("domain_crash_sync called from %s:%d\n", __FILE__, __LINE__); \ - __domain_crash_synchronous(); \ -} while (0) +#define domain_crash_synchronous() \ + _domain_crash(domain_crash_sync, __domain_crash_synchronous()) /* * Called from assembly code, with an optional address to help indicate why -- 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |