x32 statfs system call is the same as x86-64 statfs system call, which uses 64-bit integer for __statfs_word. This patch defines __statfs_word as __kernel_long_t instead of long. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Link: http://lkml.kernel.org/r/CAMe9rOrcppHvC5g8U9n7D%2BpxVGdu1G598pge3Erfw7Pr-iEpAQ@mail.gmail.com Cc: Arnd Bergmann <arnd@arndb.de> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
		
			
				
	
	
		
			83 lines
		
	
	
	
		
			1.7 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
	
		
			1.7 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef _UAPI_GENERIC_STATFS_H
 | 
						|
#define _UAPI_GENERIC_STATFS_H
 | 
						|
 | 
						|
#include <linux/types.h>
 | 
						|
 | 
						|
 | 
						|
/*
 | 
						|
 * Most 64-bit platforms use 'long', while most 32-bit platforms use '__u32'.
 | 
						|
 * Yes, they differ in signedness as well as size.
 | 
						|
 * Special cases can override it for themselves -- except for S390x, which
 | 
						|
 * is just a little too special for us. And MIPS, which I'm not touching
 | 
						|
 * with a 10' pole.
 | 
						|
 */
 | 
						|
#ifndef __statfs_word
 | 
						|
#if __BITS_PER_LONG == 64
 | 
						|
#define __statfs_word __kernel_long_t
 | 
						|
#else
 | 
						|
#define __statfs_word __u32
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
struct statfs {
 | 
						|
	__statfs_word f_type;
 | 
						|
	__statfs_word f_bsize;
 | 
						|
	__statfs_word f_blocks;
 | 
						|
	__statfs_word f_bfree;
 | 
						|
	__statfs_word f_bavail;
 | 
						|
	__statfs_word f_files;
 | 
						|
	__statfs_word f_ffree;
 | 
						|
	__kernel_fsid_t f_fsid;
 | 
						|
	__statfs_word f_namelen;
 | 
						|
	__statfs_word f_frsize;
 | 
						|
	__statfs_word f_flags;
 | 
						|
	__statfs_word f_spare[4];
 | 
						|
};
 | 
						|
 | 
						|
/*
 | 
						|
 * ARM needs to avoid the 32-bit padding at the end, for consistency
 | 
						|
 * between EABI and OABI 
 | 
						|
 */
 | 
						|
#ifndef ARCH_PACK_STATFS64
 | 
						|
#define ARCH_PACK_STATFS64
 | 
						|
#endif
 | 
						|
 | 
						|
struct statfs64 {
 | 
						|
	__statfs_word f_type;
 | 
						|
	__statfs_word f_bsize;
 | 
						|
	__u64 f_blocks;
 | 
						|
	__u64 f_bfree;
 | 
						|
	__u64 f_bavail;
 | 
						|
	__u64 f_files;
 | 
						|
	__u64 f_ffree;
 | 
						|
	__kernel_fsid_t f_fsid;
 | 
						|
	__statfs_word f_namelen;
 | 
						|
	__statfs_word f_frsize;
 | 
						|
	__statfs_word f_flags;
 | 
						|
	__statfs_word f_spare[4];
 | 
						|
} ARCH_PACK_STATFS64;
 | 
						|
 | 
						|
/* 
 | 
						|
 * IA64 and x86_64 need to avoid the 32-bit padding at the end,
 | 
						|
 * to be compatible with the i386 ABI
 | 
						|
 */
 | 
						|
#ifndef ARCH_PACK_COMPAT_STATFS64
 | 
						|
#define ARCH_PACK_COMPAT_STATFS64
 | 
						|
#endif
 | 
						|
 | 
						|
struct compat_statfs64 {
 | 
						|
	__u32 f_type;
 | 
						|
	__u32 f_bsize;
 | 
						|
	__u64 f_blocks;
 | 
						|
	__u64 f_bfree;
 | 
						|
	__u64 f_bavail;
 | 
						|
	__u64 f_files;
 | 
						|
	__u64 f_ffree;
 | 
						|
	__kernel_fsid_t f_fsid;
 | 
						|
	__u32 f_namelen;
 | 
						|
	__u32 f_frsize;
 | 
						|
	__u32 f_flags;
 | 
						|
	__u32 f_spare[4];
 | 
						|
} ARCH_PACK_COMPAT_STATFS64;
 | 
						|
 | 
						|
#endif /* _UAPI_GENERIC_STATFS_H */
 |