libc: Add ftruncate64 and improve 64-bit parameter syscall handling.
This patch improves the handling of 64-bit parameters in syscalls on ARM. The ARM EABI mandates that 64-bit quantities be passed in even/odd register pairs, which requires special treatment. This allows us to simplify our implementations of pread() and pwrite() and remove the C stubs for pread64() and pwrite64(). Also add ftruncate64() to <unistd.h> Change-Id: I407e2fd223ba0093dd2d0b04c6152fadfc9ce3ef Bug 3107933
This commit is contained in:
@@ -71,6 +71,7 @@
|
||||
#define __NR_dup2 (__NR_SYSCALL_BASE + 63)
|
||||
#define __NR__newselect (__NR_SYSCALL_BASE + 142)
|
||||
#define __NR_ftruncate (__NR_SYSCALL_BASE + 93)
|
||||
#define __NR_ftruncate64 (__NR_SYSCALL_BASE + 194)
|
||||
#define __NR_fsync (__NR_SYSCALL_BASE + 118)
|
||||
#define __NR_fdatasync (__NR_SYSCALL_BASE + 148)
|
||||
#define __NR_fchown32 (__NR_SYSCALL_BASE + 207)
|
||||
|
||||
@@ -52,8 +52,8 @@ int sigaltstack (const stack_t*, stack_t*);
|
||||
int acct (const char* filepath);
|
||||
ssize_t read (int, void*, size_t);
|
||||
ssize_t write (int, const void*, size_t);
|
||||
ssize_t __pread64 (int, void *, size_t, off_t, off_t);
|
||||
ssize_t __pwrite64 (int, void *, size_t, off_t, off_t);
|
||||
ssize_t pread64 (int, void *, size_t, off64_t);
|
||||
ssize_t pwrite64 (int, void *, size_t, off64_t);
|
||||
int __open (const char*, int, mode_t);
|
||||
int __openat (int, const char*, int, mode_t);
|
||||
int close (int);
|
||||
@@ -83,6 +83,7 @@ int pipe2 (int *, int);
|
||||
int dup2 (int, int);
|
||||
int select (int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *);
|
||||
int ftruncate (int, off_t);
|
||||
int ftruncate64 (int, off64_t);
|
||||
int getdents (unsigned int, struct dirent *, unsigned int);
|
||||
int fsync (int);
|
||||
int fdatasync (int);
|
||||
|
||||
@@ -145,6 +145,7 @@ extern int flock(int, int);
|
||||
extern int fsync(int);
|
||||
extern int fdatasync(int);
|
||||
extern int ftruncate(int, off_t);
|
||||
extern int ftruncate64(int, off64_t);
|
||||
|
||||
extern int pause(void);
|
||||
extern unsigned int alarm(unsigned int);
|
||||
|
||||
Reference in New Issue
Block a user