types.h revision 894f8cb1395d3409bb995d18abc1b3409c557d01
11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * All rights reserved.
41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *
51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Redistribution and use in source and binary forms, with or without
61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * modification, are permitted provided that the following conditions
71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * are met:
81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *  * Redistributions of source code must retain the above copyright
91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *  * Redistributions in binary form must reproduce the above copyright
111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    notice, this list of conditions and the following disclaimer in
121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    the documentation and/or other materials provided with the
131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    distribution.
141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *
151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * SUCH DAMAGE.
271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef _SYS_TYPES_H_
291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define _SYS_TYPES_H_
301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <stddef.h>
321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <stdint.h>
331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/cdefs.h>
341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <linux/types.h>
362b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughes#include <linux/posix_types.h>
371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
382b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughes/* __kernel_gid_t and __kernel_uid_t are 16 bit for legacy reasons.
392b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughes * Android uses __kernel_uid32_t and __kernel_gid32_t instead.
401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
412b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_gid32_t gid_t;
422b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_uid32_t uid_t;
432b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughes
44ad8842f5c67dea52a2b4ce280b612f41846cd2efElliott Hughestypedef unsigned long blkcnt_t;
45ad8842f5c67dea52a2b4ce280b612f41846cd2efElliott Hughestypedef unsigned long blksize_t;
462b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_caddr_t caddr_t;
472b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_clock_t clock_t;
482b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_clockid_t clockid_t;
492b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_daddr_t daddr_t;
50ad8842f5c67dea52a2b4ce280b612f41846cd2efElliott Hughestypedef unsigned long fsblkcnt_t;
51ad8842f5c67dea52a2b4ce280b612f41846cd2efElliott Hughestypedef unsigned long fsfilcnt_t;
522b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_ino_t ino_t;
532b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_key_t key_t;
542b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_mode_t mode_t;
552b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __nlink_t nlink_t;
562b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_pid_t pid_t;
572b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_suseconds_t suseconds_t;
582b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_timer_t timer_t;
592b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef unsigned int useconds_t;
602b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughes
61894f8cb1395d3409bb995d18abc1b3409c557d01Elliott Hughes#if !defined(__LP64__)
62894f8cb1395d3409bb995d18abc1b3409c557d01Elliott Hughes/* This historical accident means that we had a 32-bit dev_t on 32-bit architectures. */
63894f8cb1395d3409bb995d18abc1b3409c557d01Elliott Hughestypedef uint32_t dev_t;
64894f8cb1395d3409bb995d18abc1b3409c557d01Elliott Hughes#else
65894f8cb1395d3409bb995d18abc1b3409c557d01Elliott Hughestypedef uint64_t dev_t;
66894f8cb1395d3409bb995d18abc1b3409c557d01Elliott Hughes#endif
67894f8cb1395d3409bb995d18abc1b3409c557d01Elliott Hughes
682b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughes/* This historical accident means that we had a 32-bit time_t on 32-bit architectures. */
692b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_time_t time_t;
701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
712b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughes/* This historical accident means that we had a 32-bit off_t on 32-bit architectures. */
7250ace4fec5e8cb5afcbc656a4556fa528adfd760David 'Digit' Turner#ifndef _OFF_T_DEFINED_
731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define _OFF_T_DEFINED_
742b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_off_t off_t;
7550ace4fec5e8cb5afcbc656a4556fa528adfd760David 'Digit' Turner#endif
762b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef __kernel_loff_t loff_t;
772b333ea31ec5b5b4627f14b22253b017b346638aElliott Hughestypedef loff_t off64_t;
782ecc164ae9b8062e29faf5eca491669e2741cab3Elliott Hughes
79894f8cb1395d3409bb995d18abc1b3409c557d01Elliott Hughes/* This one really is meant to be just 32 bits! */
80894f8cb1395d3409bb995d18abc1b3409c557d01Elliott Hughestypedef uint32_t id_t;
81894f8cb1395d3409bb995d18abc1b3409c557d01Elliott Hughes
821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* while POSIX wants these in <sys/types.h>, we
831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * declare then in <pthread.h> instead */
841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#if 0
851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef  .... pthread_attr_t;
861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef  .... pthread_cond_t;
871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef  .... pthread_condattr_t;
881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef  .... pthread_key_t;
891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef  .... pthread_mutex_t;
901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef  .... pthread_once_t;
911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef  .... pthread_rwlock_t;
921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef  .... pthread_rwlock_attr_t;
931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef  .... pthread_t;
941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef _SSIZE_T_DEFINED_
971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define _SSIZE_T_DEFINED_
98b6e22482d4fbf62c23707a9096eecd2082a63ef1Elliott Hughes/* Traditionally, bionic's ssize_t was "long int". This caused GCC to emit warnings when you
99e255642dc1178663860104d9da2590056fae8d0bElliott Hughes * pass a ssize_t to a printf-style function. The correct type is __kernel_ssize_t, which is
100e255642dc1178663860104d9da2590056fae8d0bElliott Hughes * "int", which isn't an ABI change for C code (because they're the same size) but is an ABI
101e255642dc1178663860104d9da2590056fae8d0bElliott Hughes * change for C++ because "int" and "long int" mangle to "i" and "l" respectively. So until
102b6e22482d4fbf62c23707a9096eecd2082a63ef1Elliott Hughes * we can fix the ABI, this change should not be propagated to the NDK. http://b/8253769. */
103c641cafbc387849510d7f408e85f72fa3608916dThorsten Glasertypedef __kernel_ssize_t ssize_t;
1041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
1051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef unsigned int        uint_t;
1071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef unsigned int        uint;
1081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* for some applications */
1101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/sysmacros.h>
1111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef __BSD_VISIBLE
1131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef	unsigned char	u_char;
1141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef	unsigned short	u_short;
1151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef	unsigned int	u_int;
1161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef	unsigned long	u_long;
1171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef uint32_t       u_int32_t;
1191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef uint16_t       u_int16_t;
1201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef uint8_t        u_int8_t;
1211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef uint64_t       u_int64_t;
1221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
1231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
1241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
125