Name: typecheck.h Addition Author: Rusty Russell Status: Simple D: This patch adds a linux/typecheck.h file, which can be used for D: simple typechecking on macro arguments. diff -urN -I \$.*\$ --exclude TAGS -X /home/rusty/current-dontdiff --minimal linux-2.4.16-uml/include/linux/typecheck.h working-2.4.16-uml-proc/include/linux/typecheck.h --- linux-2.4.16-uml/include/linux/typecheck.h Thu Jan 1 10:00:00 1970 +++ working-2.4.16-uml-proc/include/linux/typecheck.h Thu Dec 20 12:31:41 2001 @@ -0,0 +1,29 @@ +#ifndef _LINUX_TYPECHECK_H +#define _LINUX_TYPECHECK_H +/* Simple macros to do compile-time type checking. IIRC, Jakub + Jelinek came up with this idea for the 2.4 module init code. */ +/* (C) 2001 Rusty Russell */ + +#define __CHECK_byte(name, p) /* Yeah, whatever */ +#define __CHECK_short(name, p) \ + extern inline short *__CHECK_##name(void) { return(p); } +#define __CHECK_ushort(name, p) \ + extern inline unsigned short *__CHECK_##name(void) { return(p); } +#define __CHECK_int(name, p) \ + extern inline int *__CHECK_##name(void) { return(p); } +#define __CHECK_uint(name, p) \ + extern inline unsigned int *__CHECK_##name(void) { return(p); } +#define __CHECK_long(name, p) \ + extern inline long *__CHECK_##name(void) { return(p); } +#define __CHECK_ulong(name, p) \ + extern inline unsigned long *__CHECK_##name(void) { return(p); } +#define __CHECK_charp(name, p) \ + extern inline char **__CHECK_##name(void) { return(p); } +#define __CHECK_bool(name, p) \ + extern inline int *__CHECK_##name(void) { return(p); } +#define __CHECK_invbool(name, p) \ + extern inline int *__CHECK_##name(void) { return(p); } +#define __CHECK_string(name, p) \ + extern inline char *__CHECK_##name(void) { return(p); } + +#endif /* _LINUX_TYPECHECK_H */