Re: [PATCH 42/56] microblaze_v2: stats headers

Arnd Bergmann
2008-05-04T22:32:24Z

On Sunday 04 May 2008, monstr@seznam.cz wrote:
> +struct stat {
> + unsigned int st_dev;
> + unsigned long st_ino;
> + unsigned int st_mode;
> + unsigned int st_nlink;
> + unsigned int st_uid;
> + unsigned int st_gid;
> + unsigned int st_rdev;
> + long st_size;
> + unsigned long st_blksize;
> + unsigned long st_blocks;
> + unsigned long st_atime;
> + unsigned long __unused1;
> + unsigned long st_mtime;
> + unsigned long __unused2;
> + unsigned long st_ctime;
> + unsigned long __unused3;
> + unsigned long __unused4;
> + unsigned long __unused5;
> +};
> +
> +struct stat64 {
> + unsigned long long st_dev;
> + unsigned long __unused1;
> +
> + unsigned long long st_ino;
> +
> + unsigned int st_mode;
> + unsigned int st_nlink;
> +
> + unsigned int st_uid;
> + unsigned int st_gid;
> +
> + unsigned long long st_rdev;
> + unsigned long __unused3;
> +
> + long long st_size;
> + unsigned long st_blksize;
> +
> + unsigned long st_blocks; /* No. of 512-byte blocks allocated */
> + unsigned long __unused4; /* future possible st_blocks high bits */
> +
> + unsigned long st_atime;
> + unsigned long st_atime_nsec;
> +
> + unsigned long st_mtime;
> + unsigned long st_mtime_nsec;
> +
> + unsigned long st_ctime;
> + unsigned long st_ctime_nsec;
> +
> + unsigned long __unused8;
> +};

There should only be a 'struct stat', not stat64, and it would be nice
to have that in asm-generic/stat.h.

I think it should be defined as

struct stat {
unsigned long long st_dev;

unsigned long long st_ino;

unsigned int st_mode;
unsigned int st_nlink;

unsigned int st_uid;
unsigned int st_gid;

unsigned long long st_rdev;

long long st_size;

unsigned int st_blksize;
unsigned int __unused1;

unsigned long long st_blocks; /* No. of 512-byte blocks allocated */

unsigned int st_atime;
unsigned int st_atime_nsec;

unsigned int st_mtime;
unsigned int st_mtime_nsec;

unsigned int st_ctime;
unsigned int st_ctime_nsec;

unsigned int __unused2;
unsigned int __unused3;
};

This way, you don't have any unnecessary padding, and the structure
is compatible in 32 and 64 bit architectures.