diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2011-11-02 22:19:25 -0400 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2011-11-03 16:58:36 -0400 |
commit | e0b1f39d55864547242b4e4edb86d737bca3a249 (patch) | |
tree | b8cae9e5dc2e97c50a136d2345789ddd31ffdbfa /arch/tile/include/asm/sigcontext.h | |
parent | c3b92c8787367a8bb53d57d9789b558f1295cc96 (diff) | |
download | lwn-e0b1f39d55864547242b4e4edb86d737bca3a249.tar.gz lwn-e0b1f39d55864547242b4e4edb86d737bca3a249.zip |
arch/tile: avoid ISO namespace pollution with <asm/sigcontext.h>
<asm/sigcontext.h> is used by glibc's <bits/sigcontext.h> from <signal.h>,
which means that it can't clutter the namespace with random symbols
or #defines. However, we use <arch/abi.h> to get a suitable type to
hold a machine register.
This change makes <arch/abi.h> safe to use in this kind of context
if __need_int_reg_t is defined prior to including the file; in that
case, it only defines a few symbols that are safe in the ISO namespace
(prefixed with double underscores). <asm/sigcontext.h> then uses
the __uint_reg_t type instead of the normal uint_reg_t.
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Diffstat (limited to 'arch/tile/include/asm/sigcontext.h')
-rw-r--r-- | arch/tile/include/asm/sigcontext.h | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/arch/tile/include/asm/sigcontext.h b/arch/tile/include/asm/sigcontext.h index 5e2d03336f53..6348e59d3724 100644 --- a/arch/tile/include/asm/sigcontext.h +++ b/arch/tile/include/asm/sigcontext.h @@ -15,6 +15,8 @@ #ifndef _ASM_TILE_SIGCONTEXT_H #define _ASM_TILE_SIGCONTEXT_H +/* Don't pollute the namespace since <signal.h> includes this file. */ +#define __need_int_reg_t #include <arch/abi.h> /* @@ -22,14 +24,14 @@ * but is simplified since we know the fault is from userspace. */ struct sigcontext { - uint_reg_t gregs[53]; /* General-purpose registers. */ - uint_reg_t tp; /* Aliases gregs[TREG_TP]. */ - uint_reg_t sp; /* Aliases gregs[TREG_SP]. */ - uint_reg_t lr; /* Aliases gregs[TREG_LR]. */ - uint_reg_t pc; /* Program counter. */ - uint_reg_t ics; /* In Interrupt Critical Section? */ - uint_reg_t faultnum; /* Fault number. */ - uint_reg_t pad[5]; + __uint_reg_t gregs[53]; /* General-purpose registers. */ + __uint_reg_t tp; /* Aliases gregs[TREG_TP]. */ + __uint_reg_t sp; /* Aliases gregs[TREG_SP]. */ + __uint_reg_t lr; /* Aliases gregs[TREG_LR]. */ + __uint_reg_t pc; /* Program counter. */ + __uint_reg_t ics; /* In Interrupt Critical Section? */ + __uint_reg_t faultnum; /* Fault number. */ + __uint_reg_t pad[5]; }; #endif /* _ASM_TILE_SIGCONTEXT_H */ |