From 0bdc6b84f2d31f050e1f6d6b8f9f95687f14f877 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Mon, 10 Mar 2014 23:49:29 -0700 Subject: [PATCH] compiler: New macro for defining aligned structs. This is broken out into a separate commit because it adds new MSVC specific code and I don't have MSVC around to test whether it's correct. CC: Gurucharan Shetty Signed-off-by: Ben Pfaff --- lib/compiler.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/compiler.h b/lib/compiler.h index e867d72f2..3b59813c9 100644 --- a/lib/compiler.h +++ b/lib/compiler.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc. + * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -179,6 +179,20 @@ #define OVS_PACKED(DECL) __pragma(pack(push, 1)) DECL __pragma(pack(pop)) #endif +/* For defining a structure whose instances should aligned on an N-byte + * boundary. + * + * e.g. The following: + * OVS_ALIGNED_STRUCT(64, mystruct) { ... }; + * is equivalent to the following except that it specifies 64-byte alignment: + * struct mystruct { ... }; + */ +#ifndef _MSC_VER +#define OVS_ALIGNED_STRUCT(N, TAG) struct __attribute__((aligned(N))) TAG +#else +#define OVS_ALIGNED_STRUCT(N, TAG) __declspec(align(N)) struct TAG +#endif + #ifdef _MSC_VER #define CCALL __cdecl #pragma section(".CRT$XCU",read) -- 2.47.0