diff options
author | Mike Frysinger <vapier@gentoo.org> | 2009-07-20 10:50:49 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-07-20 10:50:49 -0400 |
commit | 5590ebbd363cad03d3d22558a6bc067b9519a318 (patch) | |
tree | 5c3a454ce8efbf82b215bc81640a16a4d0a801c7 /libc/sysdeps/linux/common/mknod.c | |
parent | 89753413b2d324db1220030e7802550925d3fadc (diff) |
mknod: convert to INLINE_SYSCALL() to sync with glibc
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'libc/sysdeps/linux/common/mknod.c')
-rw-r--r-- | libc/sysdeps/linux/common/mknod.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/libc/sysdeps/linux/common/mknod.c b/libc/sysdeps/linux/common/mknod.c index 7428e8be8..b52c8c55c 100644 --- a/libc/sysdeps/linux/common/mknod.c +++ b/libc/sysdeps/linux/common/mknod.c @@ -9,20 +9,14 @@ #include <sys/syscall.h> #include <sys/stat.h> -#include <sys/sysmacros.h> - -#define __NR___syscall_mknod __NR_mknod -/* kernel's fs/namei.c defines this: - * long sys_mknod(const char __user *filename, int mode, unsigned dev), - * so, no __kernel_mode_t and no __kernel_dev_t, please. - */ -static __inline__ _syscall3(int, __syscall_mknod, - const char *, path, - int /* __kernel_mode_t */, mode, - unsigned /* __kernel_dev_t */, dev) int mknod(const char *path, mode_t mode, dev_t dev) { - return __syscall_mknod(path, mode, dev); + unsigned long long int k_dev; + + /* We must convert the value to dev_t type used by the kernel. */ + k_dev = (dev) & ((1ULL << 32) - 1); + + return INLINE_SYSCALL(mknod, 3, path, mode, (unsigned int)k_dev); } libc_hidden_def(mknod) |