summaryrefslogtreecommitdiffstats
path: root/libc
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-07-20 10:50:49 -0400
committerAustin Foxley <austinf@cetoncorp.com>2009-08-19 12:16:37 -0700
commit695a890bc3f2d0e8bf020dfdd489c0e34f9676c9 (patch)
treeb5062ecc87e2e475d45197e0f10a1335ea89a9e5 /libc
parent4d4b946c61cabc02eb4704a00e6696c5014469e1 (diff)
downloaduClibc-alpine-695a890bc3f2d0e8bf020dfdd489c0e34f9676c9.tar.bz2
uClibc-alpine-695a890bc3f2d0e8bf020dfdd489c0e34f9676c9.tar.xz
mknod: convert to INLINE_SYSCALL() to sync with glibc
Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
Diffstat (limited to 'libc')
-rw-r--r--libc/sysdeps/linux/common/mknod.c18
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)