extern int gtx_initialize(void);
/* afsmonitor.c */
-extern int afsmon_Exit(int a_exitVal);
+extern int afsmon_Exit(int a_exitVal) AFS_NORETURN;
#endif /* AFSMONITOR_H */
extern afs_int32 dbwrite(struct ubik_trans *ut, afs_int32 pos, void *buff, afs_int32 len);
extern afs_int32 dbread(struct ubik_trans *ut, afs_int32 pos, void *buff, afs_int32 len);
extern afs_int32 cdbread(struct ubik_trans *ut, int type, afs_int32 pos, void *buff, afs_int32 len);
-extern void db_panic(char *reason);
+extern void db_panic(char *reason) AFS_NORETURN;
extern void ht_Reset(struct memoryHashTable *mht);
#if !defined(__GNUC__) || __GNUC__ < 2
#define AFS_UNUSED
#define AFS_ATTRIBUTE_FORMAT(style,x,y)
+#define AFS_NORETURN
#else
#define AFS_UNUSED __attribute__((unused))
#define AFS_ATTRIBUTE_FORMAT(style,x,y) __attribute__((format(style, x, y)))
+#define AFS_NORETURN __attribute__((__noreturn__));
#endif
#endif /* OPENAFS_CONFIG_AFS_STDS_H */
extern void osi_Panic(char *fmt, void *a1, void *a2, void *a3);
# else
extern void osi_Panic(char *fmt, ...)
- AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2);
+ AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2)
+ AFS_NORETURN;
#endif
extern int osi_utoa(char *buf, size_t len, unsigned long val);
extern void rxi_InitPeerParams(struct rx_peer *pp);
# ifdef UKERNEL
extern void *rx_ServerProc(void *);
# endif
-extern void osi_AssertFailK(const char *expr, const char *file, int line);
+extern void osi_AssertFailK(const char *expr, const char *file, int line) AFS_NORETURN;
extern void rxk_ListenerProc(void);
extern void rxk_Listener(void);
# ifndef UKERNEL
extern afs_kmutex_t rx_if_mutex;
#endif
extern osi_socket rxi_GetUDPSocket(u_short port);
-extern void osi_AssertFailU(const char *expr, const char *file, int line);
+extern void osi_AssertFailU(const char *expr, const char *file, int line) AFS_NORETURN;
extern void rxi_InitPeerParams(struct rx_peer *pp);
extern int rxi_HandleSocketError(int socket);
#endif
#endif /* defined(AFS_AIX32_ENV) && !defined(KERNEL) */
#ifndef KERNEL
-extern void osi_Panic(char *fmt, ...);
+extern void osi_Panic(char *fmt, ...) AFS_NORETURN;
#endif
extern void rx_GetIFInfo(void);
/* @(#)assert.h 1.1 83/08/01 SMI; from UCB 4.1 83/05/03 */
/* Modified to dump core, rather than exit. May/85 RNS */
-void AssertionFailed(char *file, int line);
+void AssertionFailed(char *file, int line) AFS_NORETURN;
#define assert(ex) do{if (!(ex)) AssertionFailed(__FILE__, __LINE__);}while(0)
/* Forward declarations */
/*@printflike@*/ void Log(const char *format, ...);
-/*@printflike@*/ void Abort(const char *format, ...);
/*@+fcnmacros +macrofcndecl@*/
/*@printflike@*/ extern void Log(const char *format, ...);
-/*@printflike@*/ extern void Abort(const char *format, ...);
+/*@printflike@*/ extern void Abort(const char *format, ...) AFS_NORETURN;
struct VnodeClassInfo VnodeClassInfo[nVNODECLASSES];
/* Forward declarations */
/*@printflike@*/ void Log(const char *format, ...);
-/*@printflike@*/ void Abort(const char *format, ...);
+/*@printflike@*/ void Abort(const char *format, ...) AFS_NORETURN;
static int IsVnodeOrphaned(VnodeId vnode);
static int AskVolumeSummary(VolumeId singleVolumeNumber);
/* prototypes */
-extern void Exit(int code);
+extern void Exit(int code) AFS_NORETURN;
extern int Fork(void);
extern int Wait(char *prog);
extern char *ToString(const char *s);