socsvn commit: r223366 - in soc2011/gk/ino64-head/sys:
compat/freebsd32 kern sys
gk at FreeBSD.org
gk at FreeBSD.org
Fri Jun 17 22:28:57 UTC 2011
Author: gk
Date: Fri Jun 17 22:28:55 2011
New Revision: 223366
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=223366
Log:
Change ino_t to 64 bits and nlink_t to 32 bits. Add new syscalls
Modified:
soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32.h
soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32_misc.c
soc2011/gk/ino64-head/sys/compat/freebsd32/syscalls.master
soc2011/gk/ino64-head/sys/kern/kern_descrip.c
soc2011/gk/ino64-head/sys/kern/syscalls.master
soc2011/gk/ino64-head/sys/kern/vfs_syscalls.c
soc2011/gk/ino64-head/sys/sys/_types.h
soc2011/gk/ino64-head/sys/sys/stat.h
soc2011/gk/ino64-head/sys/sys/vnode.h
Modified: soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32.h
==============================================================================
--- soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32.h Fri Jun 17 21:44:13 2011 (r223365)
+++ soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32.h Fri Jun 17 22:28:55 2011 (r223366)
@@ -137,10 +137,31 @@
};
struct stat32 {
- dev_t st_dev;
ino_t st_ino;
- mode_t st_mode;
nlink_t st_nlink;
+ dev_t st_dev;
+ mode_t st_mode;
+ u_int16_t st_padding0;
+ uid_t st_uid;
+ gid_t st_gid;
+ dev_t st_rdev;
+ struct timespec32 st_atim;
+ struct timespec32 st_mtim;
+ struct timespec32 st_ctim;
+ off_t st_size;
+ int64_t st_blocks;
+ u_int32_t st_blksize;
+ u_int32_t st_flags;
+ u_int32_t st_gen;
+ struct timespec32 st_birthtim;
+ unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec32));
+ unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec32));
+};
+struct freebsd8_stat32 {
+ dev_t st_dev;
+ u_int32_t st_ino;
+ mode_t st_mode;
+ u_int16_t st_nlink;
uid_t st_uid;
gid_t st_gid;
dev_t st_rdev;
@@ -159,9 +180,9 @@
struct ostat32 {
__uint16_t st_dev;
- ino_t st_ino;
+ __uint32_t st_ino;
mode_t st_mode;
- nlink_t st_nlink;
+ __uint16_t st_nlink;
__uint16_t st_uid;
__uint16_t st_gid;
__uint16_t st_rdev;
Modified: soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32_misc.c
==============================================================================
--- soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32_misc.c Fri Jun 17 21:44:13 2011 (r223365)
+++ soc2011/gk/ino64-head/sys/compat/freebsd32/freebsd32_misc.c Fri Jun 17 22:28:55 2011 (r223366)
@@ -113,7 +113,8 @@
CTASSERT(sizeof(struct kevent32) == 20);
CTASSERT(sizeof(struct iovec32) == 8);
CTASSERT(sizeof(struct msghdr32) == 28);
-CTASSERT(sizeof(struct stat32) == 96);
+CTASSERT(sizeof(struct stat32) == 104);
+CTASSERT(sizeof(struct freebsd8_stat32) == 96);
CTASSERT(sizeof(struct sigaction32) == 24);
static int freebsd32_kevent_copyout(void *arg, struct kevent *kevp, int count);
@@ -1797,6 +1798,133 @@
#endif
int
+freebsd32_fhstat(struct thread *td, struct freebsd32_fhstat_args *uap)
+{
+ struct stat sb;
+ struct stat32 sb32;
+ struct fhandle fh;
+ int error;
+
+ error = copyin(uap->u_fhp, &fh, sizeof(fhandle_t));
+ if (error != 0)
+ return (error);
+ error = kern_fhstat(td, fh, &sb);
+ if (error != 0)
+ return (error);
+ copy_stat(&sb, &sb32);
+ error = copyout(&sb32, uap->sb, sizeof (sb32));
+ return (error);
+}
+
+#ifdef COMPAT_FREEBSD8
+static void
+freebsd8_cvtstat32(struct stat *in, struct freebsd8_stat32 *out)
+{
+ CP(*in, *out, st_ino);
+ CP(*in, *out, st_nlink);
+ CP(*in, *out, st_dev);
+ CP(*in, *out, st_mode);
+ CP(*in, *out, st_uid);
+ CP(*in, *out, st_gid);
+ CP(*in, *out, st_rdev);
+ TS_CP(*in, *out, st_atim);
+ TS_CP(*in, *out, st_mtim);
+ TS_CP(*in, *out, st_ctim);
+ CP(*in, *out, st_size);
+ CP(*in, *out, st_blocks);
+ CP(*in, *out, st_blksize);
+ CP(*in, *out, st_flags);
+ CP(*in, *out, st_gen);
+ TS_CP(*in, *out, st_birthtim);
+}
+
+int
+freebsd8_freebsd32_stat(struct thread *td,
+ struct freebsd8_freebsd32_stat_args *uap)
+{
+ struct stat sb;
+ struct freebsd8_stat32 sb32;
+ int error;
+
+ error = kern_stat(td, uap->path, UIO_USERSPACE, &sb);
+ if (error != 0)
+ return (error);
+ freebsd8_cvtstat32(&sb, &sb32);
+ error = copyout(&sb32, uap->ub, sizeof (sb32));
+ return (error);
+}
+
+int
+freebsd8_freebsd32_fstat(struct thread *td,
+ struct freebsd8_freebsd32_fstat_args *uap)
+{
+ struct stat sb;
+ struct freebsd8_stat32 sb32;
+ int error;
+
+ error = kern_fstat(td, uap->fd, &sb);
+ if (error != 0)
+ return (error);
+ freebsd8_cvtstat32(&sb, &sb32);
+ error = copyout(&sb32, uap->ub, sizeof (sb32));
+ return (error);
+}
+
+int
+freebsd8_freebsd32_fstatat(struct thread *td,
+ struct freebsd8_freebsd32_fstatat_args *uap)
+{
+ struct stat sb;
+ struct freebsd8_stat32 sb32;
+ int error;
+
+ error = kern_statat(td, uap->flag, uap->fd, uap->path, UIO_USERSPACE,
+ &sb);
+ if (error != 0)
+ return (error);
+ freebsd8_cvtstat32(&sb, &sb32);
+ error = copyout(&sb32, uap->buf, sizeof (sb32));
+ return (error);
+}
+
+int
+freebsd8_freebsd32_lstat(struct thread *td,
+ struct freebsd8_freebsd32_lstat_args *uap)
+{
+ struct stat sb;
+ struct freebsd8_stat32 sb32;
+ int error;
+
+ error = kern_lstat(td, uap->path, UIO_USERSPACE, &sb);
+ if (error != 0)
+ return (error);
+ freebsd8_cvtstat32(&sb, &sb32);
+ error = copyout(&sb32, uap->ub, sizeof (sb32));
+ return (error);
+}
+
+int
+freebsd8_freebsd32_fhstat(struct thread *td,
+ struct freebsd8_freebsd32_fhstat_args *uap)
+{
+ struct stat sb;
+ struct freebsd8_stat32 sb32;
+ struct fhandle fh;
+ int error;
+
+ error = copyin(uap->u_fhp, &fh, sizeof(fhandle_t));
+ if (error != 0)
+ return (error);
+ error = kern_fhstat(td, fh, &sb);
+ if (error != 0)
+ return (error);
+ freebsd8_cvtstat32(&sb, &sb32);
+ error = copyout(&sb32, uap->sb, sizeof (sb32));
+ return (error);
+}
+#endif
+
+int
freebsd32_sysctl(struct thread *td, struct freebsd32_sysctl_args *uap)
{
int error, name[CTL_MAXNAME];
Modified: soc2011/gk/ino64-head/sys/compat/freebsd32/syscalls.master
==============================================================================
--- soc2011/gk/ino64-head/sys/compat/freebsd32/syscalls.master Fri Jun 17 21:44:13 2011 (r223365)
+++ soc2011/gk/ino64-head/sys/compat/freebsd32/syscalls.master Fri Jun 17 22:28:55 2011 (r223366)
@@ -344,12 +344,12 @@
185 AUE_NULL UNIMPL lfs_markv
186 AUE_NULL UNIMPL lfs_segclean
187 AUE_NULL UNIMPL lfs_segwait
-188 AUE_STAT STD { int freebsd32_stat(char *path, \
- struct stat32 *ub); }
-189 AUE_FSTAT STD { int freebsd32_fstat(int fd, \
- struct stat32 *ub); }
-190 AUE_LSTAT STD { int freebsd32_lstat(char *path, \
- struct stat32 *ub); }
+188 AUE_STAT COMPAT8 { int freebsd32_stat(char *path, \
+ struct freebsd8_stat32 *ub); }
+189 AUE_FSTAT COMPAT8 { int freebsd32_fstat(int fd, \
+ struct freebsd8_stat32 *ub); }
+190 AUE_LSTAT COMPAT8 { int freebsd32_lstat(char *path, \
+ struct freebsd8_stat32 *ub); }
191 AUE_PATHCONF NOPROTO { int pathconf(char *path, int name); }
192 AUE_FPATHCONF NOPROTO { int fpathconf(int fd, int name); }
193 AUE_NULL UNIMPL nosys
@@ -528,8 +528,8 @@
struct statfs32 *buf); }
298 AUE_FHOPEN NOPROTO { int fhopen(const struct fhandle *u_fhp, \
int flags); }
-299 AUE_FHSTAT NOPROTO { int fhstat(const struct fhandle *u_fhp, \
- struct stat *sb); }
+299 AUE_FHSTAT COMPAT8 { int freebsd32_fhstat(const struct fhandle *u_fhp, \
+ struct freebsd8_stat32 *sb); }
; syscall numbers for FreeBSD
300 AUE_NULL NOPROTO { int modnext(int modid); }
301 AUE_NULL STD { int freebsd32_modstat(int modid, \
@@ -919,8 +919,9 @@
gid_t gid, int flag); }
492 AUE_FEXECVE STD { int freebsd32_fexecve(int fd, \
u_int32_t *argv, u_int32_t *envv); }
-493 AUE_FSTATAT STD { int freebsd32_fstatat(int fd, char *path, \
- struct stat *buf, int flag); }
+493 AUE_FSTATAT COMPAT8 { int freebsd32_fstatat(int fd, \
+ char *path, struct freebsd8_stat32 *buf, \
+ int flag); }
494 AUE_FUTIMESAT STD { int freebsd32_futimesat(int fd, char *path, \
struct timeval *times); }
495 AUE_LINKAT NOPROTO { int linkat(int fd1, char *path1, int fd2, \
@@ -991,3 +992,13 @@
uint32_t offsetlo, uint32_t offsethi,\
uint32_t lenlo, uint32_t lenhi); }
531 AUE_NULL UNIMPL posix_fadvise
+532 AUE_STAT STD { int freebsd32_stat(char *path, \
+ struct stat32 *ub); }
+533 AUE_FSTAT STD { int freebsd32_fstat(int fd, \
+ struct stat32 *ub); }
+534 AUE_LSTAT STD { int freebsd32_lstat(char *path, \
+ struct stat32 *ub); }
+535 AUE_FHSTAT STD { int freebsd32_fhstat(const struct fhandle *u_fhp, \
+ struct stat32 *sb); }
+536 AUE_FSTATAT STD { int freebsd32_fstatat(int fd, char *path, \
+ struct stat32 *buf, int flag); }
Modified: soc2011/gk/ino64-head/sys/kern/kern_descrip.c
==============================================================================
--- soc2011/gk/ino64-head/sys/kern/kern_descrip.c Fri Jun 17 21:44:13 2011 (r223365)
+++ soc2011/gk/ino64-head/sys/kern/kern_descrip.c Fri Jun 17 22:28:55 2011 (r223366)
@@ -1271,6 +1271,31 @@
}
#endif /* COMPAT_43 */
+#if defined(COMPAT_FREEBSD4) || defined(COMPAT_FREEBSD5) || \
+ defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD7) || \
+ defined(COMPAT_FREEBSD8)
+#ifndef _SYS_SYSPROTO_H_
+struct freebsd8_fstat_args {
+ int fd;
+ struct freebsd8_stat *sb;
+};
+#endif
+int
+freebsd8_fstat(struct thread *td, struct freebsd8_fstat_args *uap)
+{
+ struct stat sb;
+ struct freebsd8_stat osb;
+ int error;
+
+ error = kern_fstat(td, uap->fd, &sb);
+ if (error != 0)
+ return (error);
+ freebsd8_cvtstat(&sb, &osb);
+ error = copyout(&osb, uap->sb, sizeof(osb));
+ return (error);
+}
+#endif /* COMPAT_FREEBSD8 */
+
/*
* Return status information about a file descriptor.
*/
Modified: soc2011/gk/ino64-head/sys/kern/syscalls.master
==============================================================================
--- soc2011/gk/ino64-head/sys/kern/syscalls.master Fri Jun 17 21:44:13 2011 (r223365)
+++ soc2011/gk/ino64-head/sys/kern/syscalls.master Fri Jun 17 22:28:55 2011 (r223366)
@@ -364,9 +364,12 @@
185 AUE_NULL UNIMPL lfs_markv
186 AUE_NULL UNIMPL lfs_segclean
187 AUE_NULL UNIMPL lfs_segwait
-188 AUE_STAT STD { int stat(char *path, struct stat *ub); }
-189 AUE_FSTAT STD { int fstat(int fd, struct stat *sb); }
-190 AUE_LSTAT STD { int lstat(char *path, struct stat *ub); }
+188 AUE_STAT COMPAT8 { int stat(char *path, \
+ struct freebsd8_stat *ub); }
+189 AUE_FSTAT COMPAT8 { int fstat(int fd, \
+ struct freebsd8_stat *sb); }
+190 AUE_LSTAT COMPAT8 { int lstat(char *path, \
+ struct freebsd8_stat *ub); }
191 AUE_PATHCONF STD { int pathconf(char *path, int name); }
192 AUE_FPATHCONF STD { int fpathconf(int fd, int name); }
193 AUE_NULL UNIMPL nosys
@@ -532,8 +535,8 @@
struct ostatfs *buf); }
298 AUE_FHOPEN STD { int fhopen(const struct fhandle *u_fhp, \
int flags); }
-299 AUE_FHSTAT STD { int fhstat(const struct fhandle *u_fhp, \
- struct stat *sb); }
+299 AUE_FHSTAT COMPAT8 { int fhstat(const struct fhandle *u_fhp, \
+ struct freebsd8_stat *sb); }
; syscall numbers for FreeBSD
300 AUE_NULL STD { int modnext(int modid); }
301 AUE_NULL STD { int modstat(int modid, \
@@ -879,8 +882,8 @@
gid_t gid, int flag); }
492 AUE_FEXECVE STD { int fexecve(int fd, char **argv, \
char **envv); }
-493 AUE_FSTATAT STD { int fstatat(int fd, char *path, \
- struct stat *buf, int flag); }
+493 AUE_FSTATAT COMPAT8 { int fstatat(int fd, char *path, \
+ struct freebsd8_stat *buf, int flag); }
494 AUE_FUTIMESAT STD { int futimesat(int fd, char *path, \
struct timeval *times); }
495 AUE_LINKAT STD { int linkat(int fd1, char *path1, int fd2, \
@@ -948,5 +951,12 @@
530 AUE_NULL STD { int posix_fallocate(int fd, \
off_t offset, off_t len); }
531 AUE_NULL UNIMPL posix_fadvise
+532 AUE_STAT STD { int stat(char *path, struct stat *ub); }
+533 AUE_FSTAT STD { int fstat(int fd, struct stat *sb); }
+534 AUE_LSTAT STD { int lstat(char *path, struct stat *ub); }
+535 AUE_FHSTAT STD { int fhstat(const struct fhandle *u_fhp, \
+ struct stat *sb); }
+536 AUE_FSTATAT STD { int fstatat(int fd, char *path, \
+ struct stat *buf, int flag); }
; Please copy any additions and changes to the following compatability tables:
; sys/compat/freebsd32/syscalls.master
Modified: soc2011/gk/ino64-head/sys/kern/vfs_syscalls.c
==============================================================================
--- soc2011/gk/ino64-head/sys/kern/vfs_syscalls.c Fri Jun 17 21:44:13 2011 (r223365)
+++ soc2011/gk/ino64-head/sys/kern/vfs_syscalls.c Fri Jun 17 22:28:55 2011 (r223366)
@@ -2271,6 +2271,123 @@
}
#endif /* COMPAT_43 */
+#if defined(COMPAT_FREEBSD4) || defined(COMPAT_FREEBSD5) || \
+ defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD7) || \
+ defined(COMPAT_FREEBSD8)
+void
+freebsd8_cvtstat(struct stat *st, struct freebsd8_stat *ost)
+{
+ ost->st_dev = st->st_dev;
+ ost->st_ino = st->st_ino; /* truncate */
+ ost->st_mode = st->st_mode;
+ ost->st_nlink = st->st_nlink; /* truncate */
+ ost->st_uid = st->st_uid;
+ ost->st_gid = st->st_gid;
+ ost->st_rdev = st->st_rdev;
+ ost->st_atim = st->st_atim;
+ ost->st_mtim = st->st_mtim;
+ ost->st_ctim = st->st_ctim;
+ ost->st_size = st->st_size;
+ ost->st_blocks = st->st_blocks;
+ ost->st_blksize = st->st_blksize;
+ ost->st_flags = st->st_flags;
+ ost->st_gen = st->st_gen;
+ ost->st_lspare = st->st_lspare;
+ ost->st_birthtim = st->st_birthtim;
+}
+
+#ifndef _SYS_SYSPROTO_H_
+struct freebsd8_stat_args {
+ char *path;
+ struct freebsd8_stat *ub;
+};
+#endif
+int
+freebsd8_stat(struct thread *td, struct freebsd8_stat_args* uap)
+{
+ struct stat sb;
+ struct freebsd8_stat osb;
+ int error;
+
+ error = kern_stat(td, uap->path, UIO_USERSPACE, &sb);
+ if (error != 0)
+ return (error);
+ freebsd8_cvtstat(&sb, &osb);
+ error = copyout(&osb, uap->ub, sizeof(osb));
+ return (error);
+}
+
+#ifndef _SYS_SYSPROTO_H_
+struct freebsd8_lstat_args {
+ char *path;
+ struct freebsd8_stat *ub;
+};
+#endif
+int
+freebsd8_lstat(struct thread *td, register struct freebsd8_lstat_args* uap)
+{
+ struct stat sb;
+ struct freebsd8_stat osb;
+ int error;
+
+ error = kern_lstat(td, uap->path, UIO_USERSPACE, &sb);
+ if (error != 0)
+ return (error);
+ freebsd8_cvtstat(&sb, &osb);
+ error = copyout(&osb, uap->ub, sizeof(osb));
+ return (error);
+}
+
+#ifndef _SYS_SYSPROTO_H_
+struct freebsd8_fhstat_args {
+ struct fhandle *u_fhp;
+ struct freebsd8_stat *sb;
+};
+#endif
+int
+freebsd8_fhstat(struct thread *td, struct freebsd8_fhstat_args* uap)
+{
+ struct fhandle fh;
+ struct stat sb;
+ struct freebsd8_stat osb;
+ int error;
+
+ error = copyin(uap->u_fhp, &fh, sizeof(fhandle_t));
+ if (error != 0)
+ return (error);
+ error = kern_fhstat(td, fh, &sb);
+ if (error != 0)
+ return (error);
+ freebsd8_cvtstat(&sb, &osb);
+ error = copyout(&osb, uap->sb, sizeof(osb));
+ return (error);
+}
+
+#ifndef _SYS_SYSPROTO_H_
+struct freebsd8_fstatat_args {
+ int fd;
+ char *path;
+ struct freebsd8_stat *buf;
+ int flag;
+};
+#endif
+int
+freebsd8_fstatat(struct thread *td, struct freebsd8_fstatat_args* uap)
+{
+ struct stat sb;
+ struct freebsd8_stat osb;
+ int error;
+
+ error = kern_statat(td, uap->flag, uap->fd, uap->path,
+ UIO_USERSPACE, &sb);
+ if (error != 0)
+ return (error);
+ freebsd8_cvtstat(&sb, &osb);
+ error = copyout(&osb, uap->buf, sizeof(osb));
+ return (error);
+}
+#endif /* COMPAT_FREEBSD8 */
+
/*
* Get file status; this version follows links.
*/
Modified: soc2011/gk/ino64-head/sys/sys/_types.h
==============================================================================
--- soc2011/gk/ino64-head/sys/sys/_types.h Fri Jun 17 21:44:13 2011 (r223365)
+++ soc2011/gk/ino64-head/sys/sys/_types.h Fri Jun 17 22:28:55 2011 (r223366)
@@ -43,13 +43,13 @@
typedef __uint64_t __fsfilcnt_t;
typedef __uint32_t __gid_t;
typedef __int64_t __id_t; /* can hold a gid_t, pid_t, or uid_t */
-typedef __uint32_t __ino_t; /* inode number */
+typedef __uint64_t __ino_t; /* inode number */
typedef long __key_t; /* IPC key (for Sys V IPC) */
typedef __int32_t __lwpid_t; /* Thread ID (a.k.a. LWP) */
typedef __uint16_t __mode_t; /* permissions */
typedef int __accmode_t; /* access permissions */
typedef int __nl_item;
-typedef __uint16_t __nlink_t; /* link count */
+typedef __uint32_t __nlink_t; /* link count */
typedef __int64_t __off_t; /* file offset */
typedef __int32_t __pid_t; /* process [group] */
typedef __int64_t __rlim_t; /* resource limit - intentionally */
Modified: soc2011/gk/ino64-head/sys/sys/stat.h
==============================================================================
--- soc2011/gk/ino64-head/sys/sys/stat.h Fri Jun 17 21:44:13 2011 (r223365)
+++ soc2011/gk/ino64-head/sys/sys/stat.h Fri Jun 17 22:28:55 2011 (r223366)
@@ -102,9 +102,9 @@
#if __BSD_VISIBLE
struct ostat {
__uint16_t st_dev; /* inode's device */
- ino_t st_ino; /* inode's number */
+ __uint32_t st_ino; /* inode's number */
mode_t st_mode; /* inode protection mode */
- nlink_t st_nlink; /* number of hard links */
+ __uint16_t st_nlink; /* number of hard links */
__uint16_t st_uid; /* user ID of the file's owner */
__uint16_t st_gid; /* group ID of the file's group */
__uint16_t st_rdev; /* device type */
@@ -117,13 +117,44 @@
fflags_t st_flags; /* user defined flags for file */
__uint32_t st_gen; /* file generation number */
};
+
+struct freebsd8_stat {
+ __dev_t st_dev; /* inode's device */
+ __uint32_t st_ino; /* inode's number */
+ mode_t st_mode; /* inode protection mode */
+ __uint16_t st_nlink; /* number of hard links */
+ uid_t st_uid; /* user ID of the file's owner */
+ gid_t st_gid; /* group ID of the file's group */
+ __dev_t st_rdev; /* device type */
+ struct timespec st_atim; /* time of last access */
+ struct timespec st_mtim; /* time of last data modification */
+ struct timespec st_ctim; /* time of last file status change */
+ off_t st_size; /* file size, in bytes */
+ blkcnt_t st_blocks; /* blocks allocated for file */
+ blksize_t st_blksize; /* optimal blocksize for I/O */
+ fflags_t st_flags; /* user defined flags for file */
+ __uint32_t st_gen; /* file generation number */
+ __int32_t st_lspare;
+ struct timespec st_birthtim; /* time of file creation */
+ /*
+ * Explicitly pad st_birthtim to 16 bytes so that the size of
+ * struct stat is backwards compatible. We use bitfields instead
+ * of an array of chars so that this doesn't require a C99 compiler
+ * to compile if the size of the padding is 0. We use 2 bitfields
+ * to cover up to 64 bits on 32-bit machines. We assume that
+ * CHAR_BIT is 8...
+ */
+ unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
+ unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
+};
#endif /* __BSD_VISIBLE */
struct stat {
- __dev_t st_dev; /* inode's device */
ino_t st_ino; /* inode's number */
- mode_t st_mode; /* inode protection mode */
nlink_t st_nlink; /* number of hard links */
+ __dev_t st_dev; /* inode's device */
+ mode_t st_mode; /* inode protection mode */
+ __int16_t st_padding0;
uid_t st_uid; /* user ID of the file's owner */
gid_t st_gid; /* group ID of the file's group */
__dev_t st_rdev; /* device type */
@@ -152,7 +183,7 @@
#if __BSD_VISIBLE
struct nstat {
__dev_t st_dev; /* inode's device */
- ino_t st_ino; /* inode's number */
+ __uint32_t st_ino; /* inode's number */
__uint32_t st_mode; /* inode protection mode */
__uint32_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of the file's owner */
Modified: soc2011/gk/ino64-head/sys/sys/vnode.h
==============================================================================
--- soc2011/gk/ino64-head/sys/sys/vnode.h Fri Jun 17 21:44:13 2011 (r223365)
+++ soc2011/gk/ino64-head/sys/sys/vnode.h Fri Jun 17 22:28:55 2011 (r223366)
@@ -569,6 +569,7 @@
struct mount;
struct nameidata;
struct ostat;
+struct freebsd8_stat;
struct thread;
struct proc;
struct stat;
@@ -590,6 +591,7 @@
int change_root(struct vnode *vp, struct thread *td);
void cvtstat(struct stat *st, struct ostat *ost);
void freebsd8_cvtnstat(struct stat *sb, struct nstat *nsb);
+void freebsd8_cvtstat(struct stat *st, struct freebsd8_stat *ost);
int getnewvnode(const char *tag, struct mount *mp, struct vop_vector *vops,
struct vnode **vpp);
int insmntque1(struct vnode *vp, struct mount *mp,
More information about the svn-soc-all
mailing list