svn commit: trunk/uClibc/libc/sysdeps/linux: arm/bits common h8300/bits i386/bits

vda at uclibc.org vda at uclibc.org
Tue Mar 3 13:00:48 UTC 2009


Author: vda
Date: 2009-03-03 13:00:48 +0000 (Tue, 03 Mar 2009)
New Revision: 25502

Log:
mknod: widen the parameters to match kernel
ustat: same, + remove superfluous "conversion"
 which does nothing at best, loses high dev bits at worst
i386/bits/kernel_stat.h: update to reflect reality (wider dev_t)
h8300/bits/kernel_stat.h: same
arm/bits/kernel_stat.h: cosmetics to match kernel header to the letter



Modified:
   trunk/uClibc/libc/sysdeps/linux/arm/bits/kernel_stat.h
   trunk/uClibc/libc/sysdeps/linux/common/mknod.c
   trunk/uClibc/libc/sysdeps/linux/common/ustat.c
   trunk/uClibc/libc/sysdeps/linux/h8300/bits/kernel_stat.h
   trunk/uClibc/libc/sysdeps/linux/i386/bits/kernel_stat.h


Changeset:
Modified: trunk/uClibc/libc/sysdeps/linux/arm/bits/kernel_stat.h
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/arm/bits/kernel_stat.h	2009-03-03 11:55:31 UTC (rev 25501)
+++ trunk/uClibc/libc/sysdeps/linux/arm/bits/kernel_stat.h	2009-03-03 13:00:48 UTC (rev 25502)
@@ -18,7 +18,7 @@
 #else
 	unsigned long  st_dev;
 #endif
-	unsigned long st_ino;
+	unsigned long  st_ino;
 	unsigned short st_mode;
 	unsigned short st_nlink;
 	unsigned short st_uid;

Modified: trunk/uClibc/libc/sysdeps/linux/common/mknod.c
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/common/mknod.c	2009-03-03 11:55:31 UTC (rev 25501)
+++ trunk/uClibc/libc/sysdeps/linux/common/mknod.c	2009-03-03 13:00:48 UTC (rev 25502)
@@ -11,14 +11,18 @@
 #include <sys/stat.h>
 #include <sys/sysmacros.h>
 
-/* libc_hidden_proto(mknod) */
-
 #define __NR___syscall_mknod __NR_mknod
-static __inline__ _syscall3(int, __syscall_mknod, const char *, path,
-		__kernel_mode_t, mode, __kernel_dev_t, dev)
+/* 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, (__kernel_dev_t)dev);
+	return __syscall_mknod(path, mode, dev);
 }
 libc_hidden_def(mknod)

Modified: trunk/uClibc/libc/sysdeps/linux/common/ustat.c
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/common/ustat.c	2009-03-03 11:55:31 UTC (rev 25501)
+++ trunk/uClibc/libc/sysdeps/linux/common/ustat.c	2009-03-03 13:00:48 UTC (rev 25502)
@@ -12,14 +12,15 @@
 #include <sys/sysmacros.h>
 
 #define __NR___syscall_ustat __NR_ustat
+/* Kernel's fs/super.c defines this:
+ * long sys_ustat(unsigned dev, struct ustat __user * ubuf),
+ * thus we use unsigned, not __kernel_dev_t.
+ */
 static __inline__ _syscall2(int, __syscall_ustat,
-		unsigned short int, kdev_t, struct ustat *, ubuf)
+		unsigned, kdev_t,
+		struct ustat *, ubuf)
 
 int ustat(dev_t dev, struct ustat *ubuf)
 {
-	/* We must convert the dev_t value to a __kernel_dev_t */
-	__kernel_dev_t k_dev;
-
-	k_dev = ((major(dev) & 0xff) << 8) | (minor(dev) & 0xff);
-	return __syscall_ustat(k_dev, ubuf);
+	return __syscall_ustat(dev, ubuf);
 }

Modified: trunk/uClibc/libc/sysdeps/linux/h8300/bits/kernel_stat.h
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/h8300/bits/kernel_stat.h	2009-03-03 11:55:31 UTC (rev 25501)
+++ trunk/uClibc/libc/sysdeps/linux/h8300/bits/kernel_stat.h	2009-03-03 13:00:48 UTC (rev 25502)
@@ -33,8 +33,7 @@
 };
 
 struct kernel_stat64 {
-	unsigned char	__pad0[6];
-	unsigned short	st_dev;
+	unsigned long long st_dev;
 	unsigned char	__pad1[2];
 #define _HAVE_STAT64___ST_INO
 	unsigned long	__st_ino;

Modified: trunk/uClibc/libc/sysdeps/linux/i386/bits/kernel_stat.h
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/i386/bits/kernel_stat.h	2009-03-03 11:55:31 UTC (rev 25501)
+++ trunk/uClibc/libc/sysdeps/linux/i386/bits/kernel_stat.h	2009-03-03 13:00:48 UTC (rev 25502)
@@ -10,8 +10,7 @@
  * different opinion on the subject... */
 
 struct kernel_stat {
-	unsigned short st_dev;
-	unsigned short __pad1;
+	unsigned long st_dev;
 	unsigned long st_ino;
 	unsigned short st_mode;
 	unsigned short st_nlink;
@@ -33,8 +32,8 @@
 };
 
 struct kernel_stat64 {
-	unsigned short	st_dev;
-	unsigned char	__pad0[10];
+	unsigned long long st_dev;
+	unsigned char	__pad0[4];
 #define _HAVE_STAT64___ST_INO
 	unsigned long	__st_ino;
 	unsigned int	st_mode;



More information about the uClibc-cvs mailing list