diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2009-03-03 13:00:48 +0000 | 
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2009-03-03 13:00:48 +0000 | 
| commit | 7f5cc205a72e8e4d9523193de1aa4058976be3eb (patch) | |
| tree | cd70fe3cf94913c2a75d5d6697ea0e92552255e7 /libc | |
| parent | eb097eb48273ccf1830c2e74639ce9069a4f9f3a (diff) | |
| download | uClibc-alpine-7f5cc205a72e8e4d9523193de1aa4058976be3eb.tar.bz2 uClibc-alpine-7f5cc205a72e8e4d9523193de1aa4058976be3eb.tar.xz | |
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
Diffstat (limited to 'libc')
| -rw-r--r-- | libc/sysdeps/linux/arm/bits/kernel_stat.h | 2 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/mknod.c | 14 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/ustat.c | 13 | ||||
| -rw-r--r-- | libc/sysdeps/linux/h8300/bits/kernel_stat.h | 3 | ||||
| -rw-r--r-- | libc/sysdeps/linux/i386/bits/kernel_stat.h | 7 | 
5 files changed, 21 insertions, 18 deletions
| diff --git a/libc/sysdeps/linux/arm/bits/kernel_stat.h b/libc/sysdeps/linux/arm/bits/kernel_stat.h index ebac6f5ff..2533573b8 100644 --- a/libc/sysdeps/linux/arm/bits/kernel_stat.h +++ b/libc/sysdeps/linux/arm/bits/kernel_stat.h @@ -18,7 +18,7 @@ struct kernel_stat {  #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; diff --git a/libc/sysdeps/linux/common/mknod.c b/libc/sysdeps/linux/common/mknod.c index 5c7f9a5fd..7428e8be8 100644 --- a/libc/sysdeps/linux/common/mknod.c +++ b/libc/sysdeps/linux/common/mknod.c @@ -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) diff --git a/libc/sysdeps/linux/common/ustat.c b/libc/sysdeps/linux/common/ustat.c index 09edaa369..e97fa76bb 100644 --- a/libc/sysdeps/linux/common/ustat.c +++ b/libc/sysdeps/linux/common/ustat.c @@ -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);  } diff --git a/libc/sysdeps/linux/h8300/bits/kernel_stat.h b/libc/sysdeps/linux/h8300/bits/kernel_stat.h index 9468292e5..c779ba378 100644 --- a/libc/sysdeps/linux/h8300/bits/kernel_stat.h +++ b/libc/sysdeps/linux/h8300/bits/kernel_stat.h @@ -33,8 +33,7 @@ struct kernel_stat {  };  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; diff --git a/libc/sysdeps/linux/i386/bits/kernel_stat.h b/libc/sysdeps/linux/i386/bits/kernel_stat.h index 20eb6d2ef..6bec170b8 100644 --- a/libc/sysdeps/linux/i386/bits/kernel_stat.h +++ b/libc/sysdeps/linux/i386/bits/kernel_stat.h @@ -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_stat {  };  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; | 
