On Tue, Mar 11, 2014 at 1:56 PM, Ben Pfaff <b...@nicira.com> wrote: > 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 <gshe...@nicira.com> > Signed-off-by: Ben Pfaff <b...@nicira.com>
Looks good to me. I do not see any users of it though. The idea is to do something like this, right? #define OVS_ALIGNED_STRUCT(N, TAG) __declspec(align(N)) struct TAG struct test { int a; int b; char c; }; OVS_ALIGNED_STRUCT(64, test); Thanks, Guru > --- > lib/compiler.h | 16 +++++++++++++++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/lib/compiler.h b/lib/compiler.h > index e867d72..3b59813 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) > -- > 1.7.10.4 > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev