Commit afead38d authored by H. Peter Anvin's avatar H. Peter Anvin

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: default avatarH. Peter Anvin <hpa@zytor.com>
parent d8e5ddef
...@@ -10,8 +10,13 @@ ...@@ -10,8 +10,13 @@
* architectures, so that you can override them. * 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 #ifndef __kernel_ino_t
typedef unsigned long __kernel_ino_t; typedef __kernel_ulong_t __kernel_ino_t;
#endif #endif
#ifndef __kernel_mode_t #ifndef __kernel_mode_t
...@@ -19,7 +24,7 @@ typedef unsigned int __kernel_mode_t; ...@@ -19,7 +24,7 @@ typedef unsigned int __kernel_mode_t;
#endif #endif
#ifndef __kernel_nlink_t #ifndef __kernel_nlink_t
typedef unsigned long __kernel_nlink_t; typedef __kernel_ulong_t __kernel_nlink_t;
#endif #endif
#ifndef __kernel_pid_t #ifndef __kernel_pid_t
...@@ -36,7 +41,7 @@ typedef unsigned int __kernel_gid_t; ...@@ -36,7 +41,7 @@ typedef unsigned int __kernel_gid_t;
#endif #endif
#ifndef __kernel_suseconds_t #ifndef __kernel_suseconds_t
typedef long __kernel_suseconds_t; typedef __kernel_long_t __kernel_suseconds_t;
#endif #endif
#ifndef __kernel_daddr_t #ifndef __kernel_daddr_t
...@@ -67,9 +72,9 @@ typedef unsigned int __kernel_size_t; ...@@ -67,9 +72,9 @@ typedef unsigned int __kernel_size_t;
typedef int __kernel_ssize_t; typedef int __kernel_ssize_t;
typedef int __kernel_ptrdiff_t; typedef int __kernel_ptrdiff_t;
#else #else
typedef unsigned long __kernel_size_t; typedef __kernel_ulong_t __kernel_size_t;
typedef long __kernel_ssize_t; typedef __kernel_long_t __kernel_ssize_t;
typedef long __kernel_ptrdiff_t; typedef __kernel_long_t __kernel_ptrdiff_t;
#endif #endif
#endif #endif
...@@ -82,10 +87,10 @@ typedef struct { ...@@ -82,10 +87,10 @@ typedef struct {
/* /*
* anything below here should be completely generic * 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 long __kernel_loff_t;
typedef long __kernel_time_t; typedef __kernel_long_t __kernel_time_t;
typedef long __kernel_clock_t; typedef __kernel_long_t __kernel_clock_t;
typedef int __kernel_timer_t; typedef int __kernel_timer_t;
typedef int __kernel_clockid_t; typedef int __kernel_clockid_t;
typedef char * __kernel_caddr_t; typedef char * __kernel_caddr_t;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment