diff options
author | H. Peter Anvin <hpa@zytor.com> | 2012-02-14 13:11:31 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2012-02-20 12:48:47 -0800 |
commit | afead38d011ab2f333d12ebb6752ed9baa53b667 (patch) | |
tree | 2812951df334a1bf6f21c82797090651d8044ce7 /include/asm-generic | |
parent | d8e5ddef21df05bc2a14d8c0e287cbf083da60a3 (diff) | |
download | lwn-afead38d011ab2f333d12ebb6752ed9baa53b667.tar.gz lwn-afead38d011ab2f333d12ebb6752ed9baa53b667.zip |
posix_types: Introduce __kernel_[u]long_t
Introduce __kernel_[u]long_t, which allows an ABI to override all
defaults of type [unsigned] long.
This enables x32 and potentially other 32-bit userspace on 64-bit
kernel ABIs.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'include/asm-generic')
-rw-r--r-- | include/asm-generic/posix_types.h | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/include/asm-generic/posix_types.h b/include/asm-generic/posix_types.h index e294fe66125b..91d44bd4dde3 100644 --- a/include/asm-generic/posix_types.h +++ b/include/asm-generic/posix_types.h @@ -10,8 +10,13 @@ * architectures, so that you can override them. */ +#ifndef __kernel_long_t +typedef long __kernel_long_t; +typedef unsigned long __kernel_ulong_t; +#endif + #ifndef __kernel_ino_t -typedef unsigned long __kernel_ino_t; +typedef __kernel_ulong_t __kernel_ino_t; #endif #ifndef __kernel_mode_t @@ -19,7 +24,7 @@ typedef unsigned int __kernel_mode_t; #endif #ifndef __kernel_nlink_t -typedef unsigned long __kernel_nlink_t; +typedef __kernel_ulong_t __kernel_nlink_t; #endif #ifndef __kernel_pid_t @@ -36,7 +41,7 @@ typedef unsigned int __kernel_gid_t; #endif #ifndef __kernel_suseconds_t -typedef long __kernel_suseconds_t; +typedef __kernel_long_t __kernel_suseconds_t; #endif #ifndef __kernel_daddr_t @@ -67,9 +72,9 @@ typedef unsigned int __kernel_size_t; typedef int __kernel_ssize_t; typedef int __kernel_ptrdiff_t; #else -typedef unsigned long __kernel_size_t; -typedef long __kernel_ssize_t; -typedef long __kernel_ptrdiff_t; +typedef __kernel_ulong_t __kernel_size_t; +typedef __kernel_long_t __kernel_ssize_t; +typedef __kernel_long_t __kernel_ptrdiff_t; #endif #endif @@ -82,10 +87,10 @@ typedef struct { /* * anything below here should be completely generic */ -typedef long __kernel_off_t; +typedef __kernel_long_t __kernel_off_t; typedef long long __kernel_loff_t; -typedef long __kernel_time_t; -typedef long __kernel_clock_t; +typedef __kernel_long_t __kernel_time_t; +typedef __kernel_long_t __kernel_clock_t; typedef int __kernel_timer_t; typedef int __kernel_clockid_t; typedef char * __kernel_caddr_t; |