From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [RFC 5/6] xen/console: Add noreturn attribute to panic function Date: Sun, 5 Jan 2014 22:44:04 +0000 Message-ID: <52C9E034.1020707@citrix.com> References: <1388957191-10337-1-git-send-email-julien.grall@linaro.org> <1388957191-10337-6-git-send-email-julien.grall@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1VzwQV-0004Kz-OC for xen-devel@lists.xenproject.org; Sun, 05 Jan 2014 22:44:11 +0000 In-Reply-To: <1388957191-10337-6-git-send-email-julien.grall@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Julien Grall , xen-devel@lists.xenproject.org Cc: tim@xen.org, patches@linaro.org, Keir Fraser , ian.campbell@citrix.com, stefano.stabellini@eu.citrix.com List-Id: xen-devel@lists.xenproject.org On 05/01/2014 21:26, Julien Grall wrote: > Panic function will never return. Without this attribute, gcc may output > warnings in call function. > > Cc: Keir Fraser > Signed-off-by: Julien Grall I have a longer series doing rather more noreturn'ing than just this, if you can wait until the 4.5 dev window opens up again. ~Andrew > --- > xen/drivers/char/console.c | 4 +++- > xen/include/xen/lib.h | 2 +- > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c > index f83c92e..229d48a 100644 > --- a/xen/drivers/char/console.c > +++ b/xen/drivers/char/console.c > @@ -1049,7 +1049,7 @@ __initcall(debugtrace_init); > * ************************************************************** > */ > > -void panic(const char *fmt, ...) > +void __attribute__((noreturn)) panic(const char *fmt, ...) > { > va_list args; > unsigned long flags; > @@ -1092,6 +1092,8 @@ void panic(const char *fmt, ...) > watchdog_disable(); > machine_restart(5000); > } > + > + while ( 1 ); > } > > void __bug(char *file, int line) > diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h > index 5b258fd..9c3a242 100644 > --- a/xen/include/xen/lib.h > +++ b/xen/include/xen/lib.h > @@ -88,7 +88,7 @@ extern void printk(const char *format, ...) > extern void guest_printk(const struct domain *d, const char *format, ...) > __attribute__ ((format (printf, 2, 3))); > extern void panic(const char *format, ...) > - __attribute__ ((format (printf, 1, 2))); > + __attribute__ ((format (printf, 1, 2))) __attribute__ ((noreturn)); > extern long vm_assist(struct domain *, unsigned int, unsigned int); > extern int __printk_ratelimit(int ratelimit_ms, int ratelimit_burst); > extern int printk_ratelimit(void);