|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/2] xen/compiler: Replace opencoded __attribute__((noreturn))
On Mon, 2013-11-25 at 10:25 +0000, Andrew Cooper wrote:
> Make a formal define for noreturn in compiler.h, and replace opencoded
> uses of __attribute__((noreturn)).
>
> There is a stale statement in sh_skip_sync(); BUG() now contains
> unreachable(), removing the justification for having "return 0".
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> CC: Keir Fraser <keir@xxxxxxx>
> CC: Jan Beulich <JBeulich@xxxxxxxx>
Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> CC: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
> CC: Tim Deegan <tim@xxxxxxx>
>
> ---
>
> I have compile tested this for both arm32 and arm64
> ---
> xen/arch/arm/early_printk.c | 2 +-
> xen/arch/x86/crash.c | 2 +-
> xen/arch/x86/mm/shadow/common.c | 1 -
> xen/arch/x86/shutdown.c | 2 +-
> xen/include/asm-arm/early_printk.h | 4 ++--
> xen/include/xen/compiler.h | 2 ++
> xen/include/xen/lib.h | 2 +-
> xen/include/xen/sched.h | 4 ++--
> 8 files changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/xen/arch/arm/early_printk.c b/xen/arch/arm/early_printk.c
> index 058d044..00ec72a 100644
> --- a/xen/arch/arm/early_printk.c
> +++ b/xen/arch/arm/early_printk.c
> @@ -52,7 +52,7 @@ void __init early_printk(const char *fmt, ...)
> va_end(args);
> }
>
> -void __attribute__((noreturn)) __init
> +void noreturn __init
> early_panic(const char *fmt, ...)
> {
> va_list args;
> diff --git a/xen/arch/x86/crash.c b/xen/arch/x86/crash.c
> index 01fd906..836babb 100644
> --- a/xen/arch/x86/crash.c
> +++ b/xen/arch/x86/crash.c
> @@ -36,7 +36,7 @@ static unsigned int crashing_cpu;
> static DEFINE_PER_CPU_READ_MOSTLY(bool_t, crash_save_done);
>
> /* This becomes the NMI handler for non-crashing CPUs, when Xen is crashing.
> */
> -void __attribute__((noreturn)) do_nmi_crash(struct cpu_user_regs *regs)
> +void noreturn do_nmi_crash(struct cpu_user_regs *regs)
> {
> int cpu = smp_processor_id();
>
> diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
> index 0bfa595..c1a416c 100644
> --- a/xen/arch/x86/mm/shadow/common.c
> +++ b/xen/arch/x86/mm/shadow/common.c
> @@ -875,7 +875,6 @@ static int sh_skip_sync(struct vcpu *v, mfn_t gl1mfn)
> SHADOW_ERROR("gmfn %#lx was OOS but not shadowed as an l1.\n",
> mfn_x(gl1mfn));
> BUG();
> - return 0; /* BUG() is no longer __attribute__((noreturn)). */
> }
>
>
> diff --git a/xen/arch/x86/shutdown.c b/xen/arch/x86/shutdown.c
> index 6eba271..6143c40 100644
> --- a/xen/arch/x86/shutdown.c
> +++ b/xen/arch/x86/shutdown.c
> @@ -85,7 +85,7 @@ static inline void kb_wait(void)
> break;
> }
>
> -static void __attribute__((noreturn)) __machine_halt(void *unused)
> +static void noreturn __machine_halt(void *unused)
> {
> local_irq_disable();
> for ( ; ; )
> diff --git a/xen/include/asm-arm/early_printk.h
> b/xen/include/asm-arm/early_printk.h
> index 707bbf7..3cb8dab 100644
> --- a/xen/include/asm-arm/early_printk.h
> +++ b/xen/include/asm-arm/early_printk.h
> @@ -26,7 +26,7 @@
>
> void early_printk(const char *fmt, ...)
> __attribute__((format (printf, 1, 2)));
> -void early_panic(const char *fmt, ...) __attribute__((noreturn))
> +void early_panic(const char *fmt, ...) noreturn
> __attribute__((format (printf, 1, 2)));
>
> #else
> @@ -35,7 +35,7 @@ static inline __attribute__((format (printf, 1, 2))) void
> early_printk(const char *fmt, ...)
> {}
>
> -static inline void __attribute__((noreturn))
> +static inline void noreturn
> __attribute__((format (printf, 1, 2))) early_panic(const char *fmt, ...)
> {while(1);}
>
> diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h
> index 7d6805c..c80398d 100644
> --- a/xen/include/xen/compiler.h
> +++ b/xen/include/xen/compiler.h
> @@ -14,6 +14,8 @@
> #define always_inline __inline__ __attribute__ ((always_inline))
> #define noinline __attribute__((noinline))
>
> +#define noreturn __attribute__((noreturn))
> +
> #if (!defined(__clang__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 5))
> #define unreachable() do {} while (1)
> #else
> diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
> index 5b258fd..814fcb4 100644
> --- a/xen/include/xen/lib.h
> +++ b/xen/include/xen/lib.h
> @@ -8,7 +8,7 @@
> #include <xen/string.h>
> #include <asm/bug.h>
>
> -void __bug(char *file, int line) __attribute__((noreturn));
> +void __bug(char *file, int line) noreturn;
> void __warn(char *file, int line);
>
> #define BUG_ON(p) do { if (unlikely(p)) BUG(); } while (0)
> diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
> index cbdf377..0d2a442 100644
> --- a/xen/include/xen/sched.h
> +++ b/xen/include/xen/sched.h
> @@ -578,7 +578,7 @@ void __domain_crash(struct domain *d);
> * Mark current domain as crashed and synchronously deschedule from the local
> * processor. This function never returns.
> */
> -void __domain_crash_synchronous(void) __attribute__((noreturn));
> +void __domain_crash_synchronous(void) noreturn;
> #define domain_crash_synchronous() do { \
> printk("domain_crash_sync called from %s:%d\n", __FILE__, __LINE__); \
> __domain_crash_synchronous(); \
> @@ -589,7 +589,7 @@ void __domain_crash_synchronous(void)
> __attribute__((noreturn));
> * the crash occured. If addr is 0, look up address from last extable
> * redirection.
> */
> -void asm_domain_crash_synchronous(unsigned long addr)
> __attribute__((noreturn));
> +void asm_domain_crash_synchronous(unsigned long addr) noreturn;
>
> #define set_current_state(_s) do { current->state = (_s); } while (0)
> void scheduler_init(void);
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |