check also Event union size explicitely
authorAleš Křenek <ljocha@ics.muni.cz>
Wed, 1 Aug 2007 15:47:29 +0000 (15:47 +0000)
committerAleš Křenek <ljocha@ics.muni.cz>
Wed, 1 Aug 2007 15:47:29 +0000 (15:47 +0000)
org.glite.lb.client-interface/interface/events.h.T
org.glite.lb.client-interface/interface/padstruct.h

index 12fd953..4fb492e 100644 (file)
@@ -18,6 +18,8 @@
 #include "glite/lb/context.h"
 #include "glite/lb/notifid.h"
 
+#include "glite/lb/padstruct.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -314,7 +316,7 @@ _EDG_WLL_EVENT_COMMON
  * \union edg_wll_Event
  * \brief All event types union
  */
-typedef union _edg_wll_Event {
+glite_lb_padded_union(_edg_wll_Event,30,
         edg_wll_EventCode           type; /* it is probably never used */
         edg_wll_AnyEvent            any;
 @@@{
@@ -327,9 +329,8 @@ for my $t (sort { $event->{order}->{$a} <=> $event->{order}->{$b} }
        gen $indent."edg_wll_${t}Event\t${tl};\n";
 }
 @@@}
-/* make it big enough for further extensions */
-       char    _pad[sizeof(void *) * 30];
-} edg_wll_Event;
+)
+typedef union _edg_wll_Event edg_wll_Event;
 
 
 /**
index 7621190..531b53e 100644 (file)
@@ -4,3 +4,8 @@
                _padded_content \
                char _padding[_padded_size*sizeof(void *) - sizeof(struct _padded_name##_to_pad__dont_use)]; \
        };
+
+#define glite_lb_padded_union(_padded_name,_padded_size,_padded_content) \
+       union _padded_name##_to_pad__dont_use { _padded_content } ; \
+       struct _padded_name##_to_check_pad__dont_use { char pad[_padded_size*sizeof(void *) - sizeof(union _padded_name##_to_pad__dont_use)]; }; \
+       union _padded_name { _padded_content char _pad[_padded_size*sizeof(void *)]; };