diff options
Diffstat (limited to 'include/linux/kernel.h')
| -rw-r--r-- | include/linux/kernel.h | 30 | 
1 files changed, 24 insertions, 6 deletions
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index e8b1597b5cf2..e8343422240a 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -185,16 +185,17 @@ static inline void might_fault(void)  extern struct atomic_notifier_head panic_notifier_list;  extern long (*panic_blink)(int state); -NORET_TYPE void panic(const char * fmt, ...) -	__attribute__ ((NORET_AND format (printf, 1, 2))) __cold; +__printf(1, 2) +void panic(const char *fmt, ...) +	__noreturn __cold;  extern void oops_enter(void);  extern void oops_exit(void);  void print_oops_end_marker(void);  extern int oops_may_print(void); -NORET_TYPE void do_exit(long error_code) -	ATTRIB_NORET; -NORET_TYPE void complete_and_exit(struct completion *, long) -	ATTRIB_NORET; +void do_exit(long error_code) +	__noreturn; +void complete_and_exit(struct completion *, long) +	__noreturn;  /* Internal, do not use. */  int __must_check _kstrtoul(const char *s, unsigned int base, unsigned long *res); @@ -341,6 +342,7 @@ extern int panic_timeout;  extern int panic_on_oops;  extern int panic_on_unrecovered_nmi;  extern int panic_on_io_nmi; +extern int sysctl_panic_on_stackoverflow;  extern const char *print_tainted(void);  extern void add_taint(unsigned flag);  extern int test_taint(unsigned flag); @@ -665,6 +667,7 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }  #define BUILD_BUG_ON_ZERO(e) (0)  #define BUILD_BUG_ON_NULL(e) ((void*)0)  #define BUILD_BUG_ON(condition) +#define BUILD_BUG() (0)  #else /* __CHECKER__ */  /* Force a compilation error if a constant expression is not a power of 2 */ @@ -703,6 +706,21 @@ extern int __build_bug_on_failed;  		if (condition) __build_bug_on_failed = 1;	\  	} while(0)  #endif + +/** + * BUILD_BUG - break compile if used. + * + * If you have some code that you expect the compiler to eliminate at + * build time, you should use BUILD_BUG to detect if it is + * unexpectedly used. + */ +#define BUILD_BUG()						\ +	do {							\ +		extern void __build_bug_failed(void)		\ +			__linktime_error("BUILD_BUG failed");	\ +		__build_bug_failed();				\ +	} while (0) +  #endif	/* __CHECKER__ */  /* Trap pasters of __FUNCTION__ at compile-time */  |