Bring the vki_sigevent_t definition into line with current kernels.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4216 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/include/vki-linux.h b/include/vki-linux.h
index 3432141..3206fa4 100644
--- a/include/vki-linux.h
+++ b/include/vki-linux.h
@@ -440,13 +440,17 @@
#define VKI_SI_USER 0 /* sent by kill, sigsend, raise */
#define VKI_SI_TKILL -6 /* sent by tkill system call */
-#define VKI_SIGEV_MAX_SIZE 64
-#ifndef VKI_SIGEV_PAD_SIZE
-#define VKI_SIGEV_PAD_SIZE ((VKI_SIGEV_MAX_SIZE/sizeof(int)) - 3)
+/*
+ * This works because the alignment is ok on all current architectures
+ * but we leave open this being overridden in the future
+ */
+#ifndef VKI___ARCH_SIGEV_PREAMBLE_SIZE
+#define VKI___ARCH_SIGEV_PREAMBLE_SIZE (sizeof(int) * 2 + sizeof(vki_sigval_t))
#endif
-// [[Nb: in 2.6.8.1, this constant is never defined...]]
-#ifndef HAVE_ARCH_SIGEVENT_T
+#define VKI_SIGEV_MAX_SIZE 64
+#define VKI_SIGEV_PAD_SIZE ((VKI_SIGEV_MAX_SIZE - VKI___ARCH_SIGEV_PREAMBLE_SIZE) \
+ / sizeof(int))
typedef struct vki_sigevent {
vki_sigval_t sigev_value;
@@ -463,8 +467,6 @@
} _sigev_un;
} vki_sigevent_t;
-#endif
-
//----------------------------------------------------------------------
// From elsewhere...
//----------------------------------------------------------------------