diff options
Diffstat (limited to 'libc/sysdeps/linux/common/syscalls.c')
-rw-r--r-- | libc/sysdeps/linux/common/syscalls.c | 114 |
1 files changed, 100 insertions, 14 deletions
diff --git a/libc/sysdeps/linux/common/syscalls.c b/libc/sysdeps/linux/common/syscalls.c index 6090d37db..867635856 100644 --- a/libc/sysdeps/linux/common/syscalls.c +++ b/libc/sysdeps/linux/common/syscalls.c @@ -156,9 +156,17 @@ time_t time (time_t *t) #endif //#define __NR_mknod 14 -#ifdef L_mknod +#ifdef L___syscall_mknod +#define __NR___syscall_mknod __NR_mknod #include <sys/stat.h> -_syscall3(int, mknod, const char *, path, mode_t, mode, dev_t, dev); +_syscall3(int, __syscall_mknod, const char *, path, __kernel_mode_t, mode, __kernel_dev_t, dev); +int mknod(const char *path, mode_t mode, dev_t dev) +{ + __kernel_dev_t k_dev; + /* We must convert the dev_t value to a __kernel_dev_t */ + k_dev = ((major(dev) & 0xff) << 8) | (minor(dev) & 0xff); + return __syscall_mknod(path, mode, k_dev); +} #endif //#define __NR_chmod 15 @@ -958,30 +966,69 @@ _syscall2(int, getitimer, __itimer_which_t, which, struct itimerval *, value); #endif //#define __NR_stat 106 -#ifdef L_stat +#ifdef L___syscall_stat +#define __NR___syscall_stat __NR_stat #include <unistd.h> #include <sys/stat.h> -_syscall2(int, stat, const char *, file_name, struct stat *, buf); +#include <bits/kernel_stat.h> +#include "xstatconv.c" +_syscall2(int, __syscall_stat, const char *, file_name, struct kernel_stat *, buf); +int stat(const char * file_name, struct stat * buf) +{ + int result; + struct kernel_stat kbuf; + result = __syscall_stat(file_name, &kbuf); + if (result == 0) { + __xstat_conv(&kbuf, buf); + } + return result; +} #if ! defined __NR_stat64 && defined __UCLIBC_HAS_LFS__ weak_alias(stat, stat64); #endif #endif //#define __NR_lstat 107 -#ifdef L_lstat +#ifdef L___syscall_lstat +#define __NR___syscall_lstat __NR_lstat #include <unistd.h> #include <sys/stat.h> -_syscall2(int, lstat, const char *, file_name, struct stat *, buf); +#include <bits/kernel_stat.h> +#include "xstatconv.c" +_syscall2(int, __syscall_lstat, const char *, file_name, struct kernel_stat *, buf); +int lstat(const char * file_name, struct stat * buf) +{ + int result; + struct kernel_stat kbuf; + result = __syscall_lstat(file_name, &kbuf); + if (result == 0) { + __xstat_conv(&kbuf, buf); + } + return result; +} #if ! defined __NR_lstat64 && defined __UCLIBC_HAS_LFS__ weak_alias(lstat, lstat64); #endif #endif //#define __NR_fstat 108 -#ifdef L_fstat +#ifdef L___syscall_fstat +#define __NR___syscall_fstat __NR_fstat #include <unistd.h> #include <sys/stat.h> -_syscall2(int, fstat, int, filedes, struct stat *, buf); +#include <bits/kernel_stat.h> +#include "xstatconv.c" +_syscall2(int, __syscall_fstat, int, fd, struct kernel_stat *, buf); +int fstat(int fd, struct stat * buf) +{ + int result; + struct kernel_stat kbuf; + result = __syscall_fstat(fd, &kbuf); + if (result == 0) { + __xstat_conv(&kbuf, buf); + } + return result; +} #if ! defined __NR_fstat64 && defined __UCLIBC_HAS_LFS__ weak_alias(fstat, fstat64); #endif @@ -1623,29 +1670,68 @@ int getrlimit (__rlimit_resource_t resource, struct rlimit *rlimits) //#define __NR_stat64 195 -#ifdef L_stat64 +#ifdef L___syscall_stat64 #if defined __NR_stat64 && defined __UCLIBC_HAS_LFS__ +#define __NR___syscall_stat64 __NR_stat64 #include <unistd.h> #include <sys/stat.h> -_syscall2(int, stat64, const char *, file_name, struct stat64 *, buf); +#include <bits/kernel_stat.h> +#include "xstatconv.c" +_syscall2(int, __syscall_stat64, const char *, file_name, struct kernel_stat64 *, buf); +int stat64(const char * file_name, struct stat64 * buf) +{ + int result; + struct kernel_stat64 kbuf; + result = __syscall_stat64(file_name, &kbuf); + if (result == 0) { + __xstat64_conv(&kbuf, buf); + } + return result; +} #endif /* __UCLIBC_HAS_LFS__ */ #endif //#define __NR_lstat64 196 -#ifdef L_lstat64 +#ifdef L___syscall_lstat64 #if defined __NR_lstat64 && defined __UCLIBC_HAS_LFS__ +#define __NR___syscall_lstat64 __NR_lstat64 #include <unistd.h> #include <sys/stat.h> -_syscall2(int, lstat64, const char *, file_name, struct stat64 *, buf); +#include <bits/kernel_stat.h> +#include "xstatconv.c" +_syscall2(int, __syscall_lstat64, const char *, file_name, struct kernel_stat64 *, buf); +int lstat64(const char * file_name, struct stat64 * buf) +{ + int result; + struct kernel_stat64 kbuf; + result = __syscall_lstat64(file_name, &kbuf); + if (result == 0) { + __xstat64_conv(&kbuf, buf); + } + return result; +} #endif /* __UCLIBC_HAS_LFS__ */ #endif //#define __NR_fstat64 197 -#ifdef L_fstat64 +#ifdef L___syscall_fstat64 #if defined __NR_fstat64 && defined __UCLIBC_HAS_LFS__ +#define __NR___syscall_fstat64 __NR_fstat64 #include <unistd.h> #include <sys/stat.h> -_syscall2(int, fstat64, int, filedes, struct stat64 *, buf); +#include <bits/kernel_stat.h> +#include "xstatconv.c" +_syscall2(int, __syscall_fstat64, int, filedes, struct kernel_stat64 *, buf); +int fstat64(int fd, struct stat64 * buf) +{ + int result; + struct kernel_stat64 kbuf; + result = __syscall_fstat64(fd, &kbuf); + if (result == 0) { + __xstat64_conv(&kbuf, buf); + } + return result; +} #endif /* __UCLIBC_HAS_LFS__ */ #endif |