Jakub> # if __WORDSIZE == 64
Jakub> # define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
Jakub> # else
Jakub> # define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
Jakub> # endif
Jakub> typedef struct siginfo
Jakub> {
Jakub> int si_signo; /* Signal number. */
Jakub> int si_errno; /* If non-zero, an errno value associated with
Jakub> this signal, as defined in <errno.h>. */
Jakub> int si_code; /* Signal code. */
Jakub> union
Jakub> {
Jakub> int _pad[__SI_PAD_SIZE];
Jakub> ...
Jakub> struct
Jakub> {
Jakub> void *si_addr; /* Faulting insn/memory ref. */
Jakub> } _sigfault;
Jakub> ...
Jakub> } _sifields;
Jakub> } siginfo_t;
Jakub> The kernel unfortunately does this right on sparc64 and alpha
Jakub> from 64-bit arches only; ia64, s390x, ppc64 etc. got it
Jakub> wrong.
The ia64 kernel defines in asm-ia64/siginfo.h:
#define SI_PAD_SIZE ((SI_MAX_SIZE/sizeof(int)) - 4)
typedef struct siginfo {
int si_signo;
int si_errno;
int si_code;
int __pad0;
What's wrong with that?
--david
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/