LINUX: Define printf/uprintf as variadic macros
authorAndrew Deason <adeason@sinenomine.net>
Mon, 24 Sep 2012 18:03:34 +0000 (13:03 -0500)
committerDerrick Brashear <shadow@your-file-system.com>
Tue, 25 Sep 2012 03:44:43 +0000 (20:44 -0700)
Instead of defining the string 'printf' itself, make printf (and
uprintf) variadic macros. This avoids renaming printf to printk for
things like '__attribute__((format(printf,X,Y)))'.

Note that this is Linux-specific; compilers on other platforms may not
support variadic macros.

This avoids many warnings in the Linux kernel module build if we
include Linux headers after AFS headers.

Change-Id: I2b8ed67f25e93f559535e40680ecab6fe7579e9c
Reviewed-on: http://gerrit.openafs.org/8150
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

src/afs/LINUX/osi_machdep.h
src/rx/rx_kernel.h

index 9260733..906f474 100644 (file)
@@ -133,8 +133,8 @@ static inline long copyinstr(char *from, char *to, int count, int *length) {
 #define copyout(F, T, C) (copy_to_user ((char*)(T), (char*)(F), (C)) > 0 ? EFAULT : 0)
 
 /* kernel print statements */
-#define printf printk
-#define uprintf printk
+#define printf(args...) printk(args)
+#define uprintf(args...) printk(args)
 
 
 #ifndef NGROUPS
index 1351d17..63f0930 100644 (file)
@@ -38,7 +38,11 @@ typedef struct socket *osi_socket;
 extern int osi_utoa(char *buf, size_t len, unsigned long val);
 #define osi_Assert(exp) (void)((exp) || (osi_AssertFailK( #exp , __FILE__, __LINE__), 0))
 
-#define        osi_Msg printf)(
+#ifdef AFS_LINUX20_ENV
+# define       osi_Msg printk)(
+#else
+# define       osi_Msg printf)(
+#endif
 #define osi_VMsg vprintf)(
 
 #define        osi_YieldIfPossible()