summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/sysdeps/linux/common/bits/types.h33
1 files changed, 25 insertions, 8 deletions
diff --git a/libc/sysdeps/linux/common/bits/types.h b/libc/sysdeps/linux/common/bits/types.h
index 07b8ff1a7..aebd8b8c5 100644
--- a/libc/sysdeps/linux/common/bits/types.h
+++ b/libc/sysdeps/linux/common/bits/types.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,92,1994-1999,2000,2001 Free Software Foundation, Inc.
+/* bits/types.h -- definitions of __*_t types underlying *_t types.
+ Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -24,6 +25,7 @@
#define _BITS_TYPES_H 1
#include <features.h>
+#include <bits/wordsize.h>
#define __need_size_t
#include <stddef.h>
@@ -31,10 +33,14 @@
/* Convenience types. */
typedef unsigned char __u_char;
-typedef unsigned short __u_short;
+typedef unsigned short int __u_short;
typedef unsigned int __u_int;
-typedef unsigned long __u_long;
-#ifdef __GNUC__
+typedef unsigned long int __u_long;
+
+#if __WORDSIZE == 64
+typedef long int __quad_t;
+typedef unsigned long int __u_quad_t;
+#elif defined(__GNUC__)
__extension__ typedef unsigned long long int __u_quad_t;
__extension__ typedef long long int __quad_t;
#else
@@ -53,12 +59,23 @@ typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
-#ifdef __GNUC__
+#if __WORDSIZE == 64
+typedef signed long int __int64_t;
+typedef unsigned long int __uint64_t;
+#elif defined(__GNUC__)
__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;
#endif
typedef __quad_t *__qaddr_t;
+#if __WORDSIZE == 32
+# define __SWORD_TYPE int
+#elif __WORDSIZE == 64
+# define __SWORD_TYPE long int
+#else
+# error
+#endif
+
typedef __u_quad_t __dev_t; /* Type of device numbers. */
typedef __u_int __uid_t; /* Type of user identifications. */
typedef __u_int __gid_t; /* Type of group identifications. */
@@ -68,7 +85,7 @@ typedef __u_int __nlink_t; /* Type of file link counts. */
typedef long int __off_t; /* Type of file sizes and offsets. */
typedef __quad_t __loff_t; /* Type of file sizes and offsets. */
typedef int __pid_t; /* Type of process identifications. */
-typedef int __ssize_t; /* Type of a byte count, or error. */
+typedef __SWORD_TYPE __ssize_t; /* Type of a byte count, or error. */
typedef __u_long __rlim_t; /* Type of resource counts. */
typedef __u_quad_t __rlim64_t; /* Type of resource counts (LFS). */
typedef __u_int __id_t; /* General type for ID. */
@@ -85,14 +102,14 @@ typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef long int __swblk_t; /* Type of a swap block maybe? */
-
+
typedef long int __clock_t;
/* Clock ID used in clock and timer functions. */
typedef int __clockid_t;
/* Timer ID returned by `timer_create'. */
-typedef int __timer_t;
+typedef void *__timer_t;
/* Number of descriptors that can fit in an `fd_set'. */