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_ */