diff options
| author | "Steven J. Hill" <sjhill@realitydiluted.com> | 2006-08-24 03:20:06 +0000 |
|---|---|---|
| committer | "Steven J. Hill" <sjhill@realitydiluted.com> | 2006-08-24 03:20:06 +0000 |
| commit | ec466507064006af7f28b731be33be54fddb9295 (patch) | |
| tree | 194ac7364594cb8b83878b3395c2c31a441c91a5 /libc/sysdeps/linux/x86_64 | |
| parent | 2fb4f236160d580e2e0721b0293dce2103fac45a (diff) | |
| download | uClibc-alpine-ec466507064006af7f28b731be33be54fddb9295.tar.bz2 uClibc-alpine-ec466507064006af7f28b731be33be54fddb9295.tar.xz | |
Big fricking merge from trunk, but an easy one.
Diffstat (limited to 'libc/sysdeps/linux/x86_64')
| -rw-r--r-- | libc/sysdeps/linux/x86_64/bits/fcntl.h | 40 | ||||
| -rw-r--r-- | libc/sysdeps/linux/x86_64/bits/mathdef.h | 18 | ||||
| -rw-r--r-- | libc/sysdeps/linux/x86_64/bits/mman.h | 2 | ||||
| -rw-r--r-- | libc/sysdeps/linux/x86_64/bits/stat.h | 30 | ||||
| -rw-r--r-- | libc/sysdeps/linux/x86_64/bits/syscalls.h | 8 | ||||
| -rw-r--r-- | libc/sysdeps/linux/x86_64/brk.c | 5 | ||||
| -rw-r--r-- | libc/sysdeps/linux/x86_64/bsd-_setjmp.S | 4 | ||||
| -rw-r--r-- | libc/sysdeps/linux/x86_64/clone.S | 5 | ||||
| -rw-r--r-- | libc/sysdeps/linux/x86_64/fpu_control.h | 2 |
9 files changed, 95 insertions, 19 deletions
diff --git a/libc/sysdeps/linux/x86_64/bits/fcntl.h b/libc/sysdeps/linux/x86_64/bits/fcntl.h index 712007c36..f69bcf60e 100644 --- a/libc/sysdeps/linux/x86_64/bits/fcntl.h +++ b/libc/sysdeps/linux/x86_64/bits/fcntl.h @@ -21,9 +21,12 @@ # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead." #endif - #include <sys/types.h> #include <bits/wordsize.h> +#ifdef __USE_GNU +# include <bits/uio.h> +#endif + /* open/fcntl - O_SYNC is only implemented on blocks devices and on files located on an ext2 file system */ @@ -194,16 +197,45 @@ struct flock64 # define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ #endif -/* Linux-specific operations for posix_fadvise. */ + #ifdef __USE_GNU -# define LINUX_FADV_ASYNC_WRITE 32 /* Start writeout on range. */ -# define LINUX_FADV_WRITE_WAIT 33 /* Wait upon writeout to range. */ +# define SYNC_FILE_RANGE_WAIT_BEFORE 1 /* Wait upon writeout of all pages + in the range before performing the + write. */ +# define SYNC_FILE_RANGE_WRITE 2 /* Initiate writeout of all those + dirty pages in the range which are + not presently under writeback. */ +# define SYNC_FILE_RANGE_WAIT_AFTER 4 /* Wait upon writeout of all pages in + the range after performing the + write. */ #endif __BEGIN_DECLS +#if 0 /*def __USE_GNU*/ + /* Provide kernel hint to read ahead. */ extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count) __THROW; + +/* Selective file content synch'ing. */ +extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to, + unsigned int __flags); + + +/* Splice address range into a pipe. */ +extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count, + unsigned int __flags); + +/* Splice two files together. */ +extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags) + __THROW; + +/* In-kernel implementation of tee for pipe buffers. */ +extern int tee (int __fdin, int __fdout, size_t __len, unsigned int __flags) + __THROW; + +#endif + __END_DECLS diff --git a/libc/sysdeps/linux/x86_64/bits/mathdef.h b/libc/sysdeps/linux/x86_64/bits/mathdef.h index 37665c209..b0567e4d4 100644 --- a/libc/sysdeps/linux/x86_64/bits/mathdef.h +++ b/libc/sysdeps/linux/x86_64/bits/mathdef.h @@ -23,14 +23,30 @@ #if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF # define _MATH_H_MATHDEF 1 +# include <bits/wordsize.h> + +# if __WORDSIZE == 64 || (defined __FLT_EVAL_METHOD__ && __FLT_EVAL_METHOD__ == 0) /* The x86-64 architecture computes values with the precission of the - used type. */ + used type. Similarly for -m32 -mfpmath=sse. */ typedef float float_t; /* `float' expressions are evaluated as `float'. */ typedef double double_t; /* `double' expressions are evaluated as `double'. */ +# else +/* The ix87 FPUs evaluate all values in the 80 bit floating-point format + which is also available for the user as `long double'. Therefore we + define: */ +typedef long double float_t; /* `float' expressions are evaluated as + `long double'. */ +typedef long double double_t; /* `double' expressions are evaluated as + `long double'. */ +# endif /* The values returned by `ilogb' for 0 and NaN respectively. */ # define FP_ILOGB0 (-2147483647 - 1) # define FP_ILOGBNAN (-2147483647 - 1) #endif /* ISO C99 */ + +#if !defined __NO_LONG_DOUBLE_MATH && !defined __UCLIBC_HAS_LONG_DOUBLE_MATH__ +# define __NO_LONG_DOUBLE_MATH 1 +#endif diff --git a/libc/sysdeps/linux/x86_64/bits/mman.h b/libc/sysdeps/linux/x86_64/bits/mman.h index 880390055..535c9edcf 100644 --- a/libc/sysdeps/linux/x86_64/bits/mman.h +++ b/libc/sysdeps/linux/x86_64/bits/mman.h @@ -89,7 +89,7 @@ # define MADV_SEQUENTIAL 2 /* Expect sequential page references. */ # define MADV_WILLNEED 3 /* Will need these pages. */ # define MADV_DONTNEED 4 /* Don't need these pages. */ -# define MADV_REMOVE 5 /* Remove these pages and resources. */ +# define MADV_REMOVE 9 /* Remove these pages and resources. */ # define MADV_DONTFORK 10 /* Do not inherit across fork. */ # define MADV_DOFORK 11 /* Do inherit across fork. */ #endif diff --git a/libc/sysdeps/linux/x86_64/bits/stat.h b/libc/sysdeps/linux/x86_64/bits/stat.h index ddc292a34..3a9c7740a 100644 --- a/libc/sysdeps/linux/x86_64/bits/stat.h +++ b/libc/sysdeps/linux/x86_64/bits/stat.h @@ -78,12 +78,27 @@ struct stat #else __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ #endif +#if 0 /*def __USE_MISC*/ + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the <sys/stat.h> header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +# define st_atime st_atim.tv_sec /* Backward compatibility. */ +# define st_mtime st_mtim.tv_sec +# define st_ctime st_ctim.tv_sec +#else __time_t st_atime; /* Time of last access. */ unsigned long int st_atimensec; /* Nscecs of last access. */ __time_t st_mtime; /* Time of last modification. */ unsigned long int st_mtimensec; /* Nsecs of last modification. */ __time_t st_ctime; /* Time of last status change. */ unsigned long int st_ctimensec; /* Nsecs of last status change. */ +#endif #if __WORDSIZE == 64 long int __unused[3]; #else @@ -124,12 +139,27 @@ struct stat64 #endif __blksize_t st_blksize; /* Optimal block size for I/O. */ __blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */ +#if 0 /*def __USE_MISC*/ + /* Nanosecond resolution timestamps are stored in a format + equivalent to 'struct timespec'. This is the type used + whenever possible but the Unix namespace rules do not allow the + identifier 'timespec' to appear in the <sys/stat.h> header. + Therefore we have to handle the use of this header in strictly + standard-compliant sources special. */ + struct timespec st_atim; /* Time of last access. */ + struct timespec st_mtim; /* Time of last modification. */ + struct timespec st_ctim; /* Time of last status change. */ +# define st_atime st_atim.tv_sec /* Backward compatibility. */ +# define st_mtime st_mtim.tv_sec +# define st_ctime st_ctim.tv_sec +#else __time_t st_atime; /* Time of last access. */ unsigned long int st_atimensec; /* Nscecs of last access. */ __time_t st_mtime; /* Time of last modification. */ unsigned long int st_mtimensec; /* Nsecs of last modification. */ __time_t st_ctime; /* Time of last status change. */ unsigned long int st_ctimensec; /* Nsecs of last status change. */ +#endif #if __WORDSIZE == 64 long int __unused[3]; #else diff --git a/libc/sysdeps/linux/x86_64/bits/syscalls.h b/libc/sysdeps/linux/x86_64/bits/syscalls.h index d44f637ac..afd97c0b0 100644 --- a/libc/sysdeps/linux/x86_64/bits/syscalls.h +++ b/libc/sysdeps/linux/x86_64/bits/syscalls.h @@ -9,10 +9,6 @@ * programs. */ #include <bits/sysnum.h> -#ifndef __set_errno -# define __set_errno(val) (*__errno_location ()) = (val) -#endif - /* Some of the sneaky macros in the code were taken from glibc-2.2.5/sysdeps/unix/sysv/linux/x86_64/sysdep.h @@ -20,6 +16,10 @@ #ifndef __ASSEMBLER__ +#include <errno.h> + +#define SYS_ify(syscall_name) (__NR_##syscall_name) + #undef _syscall0 #define _syscall0(type,name) \ type name(void) \ diff --git a/libc/sysdeps/linux/x86_64/brk.c b/libc/sysdeps/linux/x86_64/brk.c index 09d911066..22f006d7e 100644 --- a/libc/sysdeps/linux/x86_64/brk.c +++ b/libc/sysdeps/linux/x86_64/brk.c @@ -21,11 +21,10 @@ #include <unistd.h> #include <sys/syscall.h> -libc_hidden_proto(brk) - /* This must be initialized data because commons can't have aliases. */ -void *__curbrk = 0; +void *__curbrk attribute_hidden = 0; +libc_hidden_proto(brk) int brk (void *addr) { void *__unbounded newbrk; diff --git a/libc/sysdeps/linux/x86_64/bsd-_setjmp.S b/libc/sysdeps/linux/x86_64/bsd-_setjmp.S index 91c587988..d5f9ae1b8 100644 --- a/libc/sysdeps/linux/x86_64/bsd-_setjmp.S +++ b/libc/sysdeps/linux/x86_64/bsd-_setjmp.S @@ -21,10 +21,6 @@ We cannot do it in C because it must be a tail-call, so frame-unwinding in setjmp doesn't clobber the state restored by longjmp. */ -#define _ASM -#define _SETJMP_H -#include <bits/setjmp.h> - .global _setjmp .type _setjmp,%function .align 16 diff --git a/libc/sysdeps/linux/x86_64/clone.S b/libc/sysdeps/linux/x86_64/clone.S index 2dc9a502c..b93c2d9a4 100644 --- a/libc/sysdeps/linux/x86_64/clone.S +++ b/libc/sysdeps/linux/x86_64/clone.S @@ -23,8 +23,9 @@ #define _ERRNO_H 1 #include <bits/errno.h> #include <sys/syscall.h> -#define _SCHED_H -#include <bits/sched.h> + +#define CLONE_VM 0x00000100 +#define CLONE_THREAD 0x00010000 /* The userland implementation is: int clone (int (*fn)(void *arg), void *child_stack, int flags, void *arg), diff --git a/libc/sysdeps/linux/x86_64/fpu_control.h b/libc/sysdeps/linux/x86_64/fpu_control.h index 3eae48e0d..6e9b3b362 100644 --- a/libc/sysdeps/linux/x86_64/fpu_control.h +++ b/libc/sysdeps/linux/x86_64/fpu_control.h @@ -95,7 +95,9 @@ typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__HI__))); #define _FPU_GETCW(cw) __asm__ ("fnstcw %0" : "=m" (*&cw)) #define _FPU_SETCW(cw) __asm__ ("fldcw %0" : : "m" (*&cw)) +#if 0 /* Default control word set at startup. */ extern fpu_control_t __fpu_control; +#endif #endif /* fpu_control.h */ |
