Module Name:    src
Committed By:   riastradh
Date:           Wed Jul 24 02:14:10 UTC 2013

Modified Files:
        src/sys/external/bsd/drm2/include/linux [riastradh-drm2]: kernel.h

Log Message:
Define swap in <linux/kernel.h>.

Kinda hokey definition, but this avoids typeof.


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.6 -r1.1.2.7 \
    src/sys/external/bsd/drm2/include/linux/kernel.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/drm2/include/linux/kernel.h
diff -u src/sys/external/bsd/drm2/include/linux/kernel.h:1.1.2.6 src/sys/external/bsd/drm2/include/linux/kernel.h:1.1.2.7
--- src/sys/external/bsd/drm2/include/linux/kernel.h:1.1.2.6	Wed Jul 24 02:12:00 2013
+++ src/sys/external/bsd/drm2/include/linux/kernel.h	Wed Jul 24 02:14:10 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: kernel.h,v 1.1.2.6 2013/07/24 02:12:00 riastradh Exp $	*/
+/*	$NetBSD: kernel.h,v 1.1.2.7 2013/07/24 02:14:10 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -53,4 +53,17 @@
 
 #define	WARN_ON(CONDITION)	WARN(CONDITION, "%s\n", #CONDITION)
 
+#define	swap(X, Y)	do						\
+{									\
+	/* XXX Kludge for type-safety.  */				\
+	if (&(X) != &(Y)) {						\
+		CTASSERT(sizeof(X) == sizeof(Y));			\
+		/* XXX Can't do this much better without typeof.  */	\
+		char __swap_tmp[sizeof(X)];				\
+		(void)memcpy(__swap_tmp, &(X), sizeof(X));		\
+		(void)memcpy(&(X), &(Y), sizeof(X));			\
+		(void)memcpy(&(Y), __swap_tmp, sizeof(X));		\
+	}								\
+} while (0)
+
 #endif  /* _LINUX_KERNEL_H_ */

Reply via email to