diff options
Diffstat (limited to 'libc/sysdeps/linux/common/bits')
| -rw-r--r-- | libc/sysdeps/linux/common/bits/errno.h | 2 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/bits/kernel_sigaction.h | 10 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/bits/poll.h | 6 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/bits/posix_opt.h | 30 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/bits/sched.h | 5 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/bits/siginfo.h | 5 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/bits/socket.h | 2 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/bits/types.h | 166 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/bits/uio.h | 1 | 
9 files changed, 151 insertions, 76 deletions
diff --git a/libc/sysdeps/linux/common/bits/errno.h b/libc/sysdeps/linux/common/bits/errno.h index 03d4729f6..f5831ef4d 100644 --- a/libc/sysdeps/linux/common/bits/errno.h +++ b/libc/sysdeps/linux/common/bits/errno.h @@ -19,7 +19,7 @@  #ifdef _ERRNO_H -# include <bits/errno_values.h> +#include <bits/errno_values.h>  #ifndef ENOTSUP  # define ENOTSUP EOPNOTSUPP diff --git a/libc/sysdeps/linux/common/bits/kernel_sigaction.h b/libc/sysdeps/linux/common/bits/kernel_sigaction.h index 5baf1e224..2fdfc897e 100644 --- a/libc/sysdeps/linux/common/bits/kernel_sigaction.h +++ b/libc/sysdeps/linux/common/bits/kernel_sigaction.h @@ -1,5 +1,5 @@ -#ifndef _BITS_STAT_STRUCT_H -#define _BITS_STAT_STRUCT_H +#ifndef _BITS_SIGACTION_STRUCT_H +#define _BITS_SIGACTION_STRUCT_H  /* This file provides whatever this particular arch's kernel thinks    * the sigaction struct should look like... */ @@ -59,10 +59,10 @@ struct kernel_sigaction {  #ifndef NO_OLD_SIGACTION  extern int __syscall_sigaction (int, const struct old_kernel_sigaction *__unbounded, -	struct old_kernel_sigaction *__unbounded); +	struct old_kernel_sigaction *__unbounded) attribute_hidden;  #endif  extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded, -	struct kernel_sigaction *__unbounded, size_t); +	struct kernel_sigaction *__unbounded, size_t) attribute_hidden; -#endif /* _BITS_STAT_STRUCT_H */ +#endif /* _BITS_SIGACTION_STRUCT_H */ diff --git a/libc/sysdeps/linux/common/bits/poll.h b/libc/sysdeps/linux/common/bits/poll.h index dccb8b666..d7996b46c 100644 --- a/libc/sysdeps/linux/common/bits/poll.h +++ b/libc/sysdeps/linux/common/bits/poll.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1997, 2001, 2006 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 @@ -36,8 +36,10 @@  #endif  #ifdef __USE_GNU -/* This is an extension for Linux.  */ +/* These are extensions for Linux.  */  # define POLLMSG	0x400 +# define POLLREMOVE	0x1000 +# define POLLRDHUP	0x2000  #endif  /* Event types always implicitly polled for.  These bits need not be set in diff --git a/libc/sysdeps/linux/common/bits/posix_opt.h b/libc/sysdeps/linux/common/bits/posix_opt.h index b2cae9d41..ce416c9dd 100644 --- a/libc/sysdeps/linux/common/bits/posix_opt.h +++ b/libc/sysdeps/linux/common/bits/posix_opt.h @@ -58,7 +58,7 @@  /* Setting of memory protections is supported.  */  #ifdef __ARCH_USE_MMU__ -# define	_POSIX_MEMORY_PROTECTION	1 +# define	_POSIX_MEMORY_PROTECTION	200112L  #else  # undef		_POSIX_MEMORY_PROTECTION  #endif @@ -101,7 +101,7 @@  /* We have the reentrant functions described in POSIX.  */  #ifdef __UCLIBC_HAS_THREADS__ -# define _POSIX_REENTRANT_FUNCTIONS      1 +# define _POSIX_REENTRANT_FUNCTIONS	1  # define _POSIX_THREAD_SAFE_FUNCTIONS	1  #else  # undef _POSIX_REENTRANT_FUNCTIONS @@ -165,6 +165,14 @@  # define _POSIX_THREAD_CPUTIME  200912L  #endif +#ifdef __UCLIBC_HAS_THREADS_NATIVE__ +/* CPU-time clocks support needs to be checked at runtime.  */ +#define _POSIX_CPUTIME  0 + +/* Clock support in threads must be also checked at runtime.  */ +#define _POSIX_THREAD_CPUTIME   0 +#endif +  /* Reader/Writer locks are available.  */  #define _POSIX_READER_WRITER_LOCKS	200912L @@ -190,7 +198,23 @@  /* The barrier functions are available.  */  #define _POSIX_BARRIERS	200912L +#ifdef __UCLIBC_HAS_THREADS_NATIVE__ +/* POSIX message queues are available.  */ +# define _POSIX_MESSAGE_PASSING  200112L +#else  /* POSIX message queues are not yet supported.  */ -#undef	_POSIX_MESSAGE_PASSING +# undef	_POSIX_MESSAGE_PASSING +#endif + +#ifdef __UCLIBC_HAS_THREADS_NATIVE__ +/* Thread process-shared synchronization is supported.  */ +#define _POSIX_THREAD_PROCESS_SHARED    200112L + +/* The monotonic clock might be available.  */ +#define _POSIX_MONOTONIC_CLOCK  0 + +/* The clock selection interfaces are available.  */ +#define _POSIX_CLOCK_SELECTION  200112L +#endif  #endif /* bits/posix_opt.h */ diff --git a/libc/sysdeps/linux/common/bits/sched.h b/libc/sysdeps/linux/common/bits/sched.h index df1d2f6da..af6276b5a 100644 --- a/libc/sysdeps/linux/common/bits/sched.h +++ b/libc/sysdeps/linux/common/bits/sched.h @@ -1,6 +1,6 @@  /* Definitions of constants and data structure for POSIX 1003.1b-1993     scheduling interface. -   Copyright (C) 1996, 1997, 1998, 1999, 2001 Free Software Foundation, Inc. +   Copyright (C) 1996-1999,2001-2003,2005,2006 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 @@ -29,6 +29,9 @@  #define SCHED_OTHER	0  #define SCHED_FIFO	1  #define SCHED_RR	2 +#if 0 /*def __USE_GNU*/ +# define SCHED_BATCH	3 +#endif  #ifdef __USE_MISC  /* Cloning flags.  */ diff --git a/libc/sysdeps/linux/common/bits/siginfo.h b/libc/sysdeps/linux/common/bits/siginfo.h index 03c1c11fc..4e9fd6ab4 100644 --- a/libc/sysdeps/linux/common/bits/siginfo.h +++ b/libc/sysdeps/linux/common/bits/siginfo.h @@ -301,8 +301,11 @@ enum  # define SIGEV_SIGNAL	SIGEV_SIGNAL    SIGEV_NONE,			/* Other notification: meaningless.  */  # define SIGEV_NONE	SIGEV_NONE -  SIGEV_THREAD			/* Deliver via thread creation.  */ +  SIGEV_THREAD,			/* Deliver via thread creation.  */  # define SIGEV_THREAD	SIGEV_THREAD + +  SIGEV_THREAD_ID = 4		/* Send signal to specific thread.  */ +#define SIGEV_THREAD_ID SIGEV_THREAD_ID  };  #endif	/* have _SIGNAL_H.  */ diff --git a/libc/sysdeps/linux/common/bits/socket.h b/libc/sysdeps/linux/common/bits/socket.h index 894cf0da2..2466c0cd1 100644 --- a/libc/sysdeps/linux/common/bits/socket.h +++ b/libc/sysdeps/linux/common/bits/socket.h @@ -264,7 +264,7 @@ extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,  #  define _EXTERN_INLINE extern __inline  # endif  _EXTERN_INLINE struct cmsghdr * -__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW +__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))  {    if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))      /* The kernel header does this so there may be a reason.  */ diff --git a/libc/sysdeps/linux/common/bits/types.h b/libc/sysdeps/linux/common/bits/types.h index 6068f6fd2..755af2ec9 100644 --- a/libc/sysdeps/linux/common/bits/types.h +++ b/libc/sysdeps/linux/common/bits/types.h @@ -70,94 +70,136 @@ typedef struct  } __u_quad_t;  #endif + +/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE +   macros for each of the OS types we define below.  The definitions +   of those macros must use the following macros for underlying types. +   We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned +   variants of each of the following integer types on this machine. + +	16		-- "natural" 16-bit type (always short) +	32		-- "natural" 32-bit type (always int) +	64		-- "natural" 64-bit type (long or long long) +	LONG32		-- 32-bit type, traditionally long +	QUAD		-- 64-bit type, always long long +	WORD		-- natural type of __WORDSIZE bits (int or long) +	LONGWORD	-- type of __WORDSIZE bits, traditionally long + +   We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the +   conventional uses of `long' or `long long' type modifiers match the +   types we define, even when a less-adorned type would be the same size. +   This matters for (somewhat) portably writing printf/scanf formats for +   these types, where using the appropriate l or ll format modifiers can +   make the typedefs and the formats match up across all GNU platforms.  If +   we used `long' when it's 64 bits where `long long' is expected, then the +   compiler would warn about the formats not matching the argument types, +   and the programmer changing them to shut up the compiler would break the +   program's portability. + +   Here we assume what is presently the case in all the GCC configurations +   we support: long long is always 64 bits, long is always word/address size, +   and int is always 32 bits.  */ + +#define	__S16_TYPE		short int +#define __U16_TYPE		unsigned short int +#define	__S32_TYPE		int +#define __U32_TYPE		unsigned int +#define __SLONGWORD_TYPE	long int +#define __ULONGWORD_TYPE	unsigned long int  #if __WORDSIZE == 32 +# define __SQUAD_TYPE		__quad_t +# define __UQUAD_TYPE		__u_quad_t  # define __SWORD_TYPE		int +# define __UWORD_TYPE		unsigned int +# define __SLONG32_TYPE		long int +# define __ULONG32_TYPE		unsigned long int +# define __S64_TYPE		__quad_t +# define __U64_TYPE		__u_quad_t +/* We want __extension__ before typedef's that use nonstandard base types +   such as `long long' in C89 mode.  */ +# define __STD_TYPE		__extension__ typedef  #elif __WORDSIZE == 64 +# define __SQUAD_TYPE		long int +# define __UQUAD_TYPE		unsigned long int  # define __SWORD_TYPE		long int +# define __UWORD_TYPE		unsigned long int +# define __SLONG32_TYPE		int +# define __ULONG32_TYPE		unsigned int +# define __S64_TYPE		long int +# define __U64_TYPE		unsigned long int +/* No need to mark the typedef with __extension__.   */ +# define __STD_TYPE		typedef  #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.  */ -typedef __u_long __ino_t;		/* Type of file serial numbers.  */ -typedef __u_int __mode_t;		/* Type of file attribute bitmasks.  */ -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 __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.  */ - -typedef struct -  { -    int __val[2]; -  } __fsid_t;				/* Type of file system IDs.  */ - -/* Everythin' else.  */ -typedef int __daddr_t;			/* The type of a disk address.  */ -typedef __quad_t *__rqaddr_t; -typedef char *__caddr_t; -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; +#include <bits/typesizes.h>	/* Defines __*_T_TYPE macros.  */ + + +__STD_TYPE __DEV_T_TYPE __dev_t;	/* Type of device numbers.  */ +__STD_TYPE __UID_T_TYPE __uid_t;	/* Type of user identifications.  */ +__STD_TYPE __GID_T_TYPE __gid_t;	/* Type of group identifications.  */ +__STD_TYPE __INO_T_TYPE __ino_t;	/* Type of file serial numbers.  */ +__STD_TYPE __INO64_T_TYPE __ino64_t;	/* Type of file serial numbers (LFS).*/ +__STD_TYPE __MODE_T_TYPE __mode_t;	/* Type of file attribute bitmasks.  */ +__STD_TYPE __NLINK_T_TYPE __nlink_t;	/* Type of file link counts.  */ +__STD_TYPE __OFF_T_TYPE __off_t;	/* Type of file sizes and offsets.  */ +__STD_TYPE __OFF64_T_TYPE __off64_t;	/* Type of file sizes and offsets (LFS).  */ +__STD_TYPE __PID_T_TYPE __pid_t;	/* Type of process identifications.  */ +__STD_TYPE __FSID_T_TYPE __fsid_t;	/* Type of file system IDs.  */ +__STD_TYPE __CLOCK_T_TYPE __clock_t;	/* Type of CPU usage counts.  */ +__STD_TYPE __RLIM_T_TYPE __rlim_t;	/* Type for resource measurement.  */ +__STD_TYPE __RLIM64_T_TYPE __rlim64_t;	/* Type for resource measurement (LFS).  */ +__STD_TYPE __ID_T_TYPE __id_t;		/* General type for IDs.  */ +__STD_TYPE __TIME_T_TYPE __time_t;	/* Seconds since the Epoch.  */ +__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds.  */ +__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds.  */ + +__STD_TYPE __DADDR_T_TYPE __daddr_t;	/* The type of a disk address.  */ +__STD_TYPE __SWBLK_T_TYPE __swblk_t;	/* Type of a swap block maybe?  */ +__STD_TYPE __KEY_T_TYPE __key_t;	/* Type of an IPC key.  */  /* Clock ID used in clock and timer functions.  */ -typedef int __clockid_t; +__STD_TYPE __CLOCKID_T_TYPE __clockid_t;  /* Timer ID returned by `timer_create'.  */ -typedef void *__timer_t; - - -/* Number of descriptors that can fit in an `fd_set'.  */ -#define __FD_SETSIZE	1024 - - -typedef int __key_t; - -/* Used in `struct shmid_ds'.  */ -typedef __kernel_ipc_pid_t __ipc_pid_t; - +__STD_TYPE __TIMER_T_TYPE __timer_t;  /* Type to represent block size.  */ -typedef long int __blksize_t; +__STD_TYPE __BLKSIZE_T_TYPE __blksize_t;  /* Types from the Large File Support interface.  */ -/* Type to count number os disk blocks.  */ -typedef long int __blkcnt_t; -typedef __quad_t __blkcnt64_t; +/* Type to count number of disk blocks.  */ +__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t; +__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t;  /* Type to count file system blocks.  */ -typedef __u_long __fsblkcnt_t; -typedef __u_quad_t __fsblkcnt64_t; - -/* Type to count file system inodes.  */ -typedef __u_long __fsfilcnt_t; -typedef __u_quad_t __fsfilcnt64_t; +__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t; +__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t; -/* Type of file serial numbers.  */ -typedef __u_quad_t __ino64_t; +/* Type to count file system nodes.  */ +__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t; +__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t; -/* Type of file sizes and offsets.  */ -typedef __loff_t __off64_t; +__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error.  */ -/* Used in XTI.  */ -typedef long int __t_scalar_t; -typedef unsigned long int __t_uscalar_t; +/* These few don't really vary by system, they always correspond +   to one of the other defined types.  */ +typedef __off64_t __loff_t;	/* Type of file sizes and offsets (LFS).  */ +typedef __quad_t *__qaddr_t; +typedef char *__caddr_t;  /* Duplicates info from stdint.h but this is used in unistd.h.  */ -typedef __SWORD_TYPE __intptr_t; +__STD_TYPE __SWORD_TYPE __intptr_t;  /* Duplicate info from sys/socket.h.  */ -typedef unsigned int __socklen_t; +__STD_TYPE __U32_TYPE __socklen_t; + + +#undef __STD_TYPE +/* Used in `struct shmid_ds'.  */ +typedef __kernel_ipc_pid_t __ipc_pid_t;  /* Now add the thread types.  */  #if defined __UCLIBC_HAS_THREADS__ && (defined __USE_POSIX199506 || defined __USE_UNIX98) diff --git a/libc/sysdeps/linux/common/bits/uio.h b/libc/sysdeps/linux/common/bits/uio.h index 84b4805fe..8e6bac984 100644 --- a/libc/sysdeps/linux/common/bits/uio.h +++ b/libc/sysdeps/linux/common/bits/uio.h @@ -36,6 +36,7 @@     functionality even if the currently running kernel does not support     this large value the readv/writev call will not fail because of this.  */  #define UIO_MAXIOV	1024 +#define UIO_FASTIOV	8  /* Structure for scatter/gather I/O.  */  | 
