about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog25
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/stat.h28
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/types.h10
-rw-r--r--sysdeps/unix/sysv/linux/ia64/fxstat.c42
-rw-r--r--sysdeps/unix/sysv/linux/ia64/kernel_stat.h26
-rw-r--r--sysdeps/unix/sysv/linux/ia64/lxstat.c42
-rw-r--r--sysdeps/unix/sysv/linux/ia64/mmap64.c1
-rw-r--r--sysdeps/unix/sysv/linux/ia64/xstat.c42
-rw-r--r--sysdeps/unix/sysv/linux/ia64/xstatconv.c68
9 files changed, 169 insertions, 115 deletions
diff --git a/ChangeLog b/ChangeLog
index d8cc30ce47..f1ed91dc0f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+2000-06-16  Jes Sorensen  <jes@linuxcare.com>
+
+	* sysdeps/unix/sysv/linux/ia64/xstat.c: New file.
+	* sysdeps/unix/sysv/linux/ia64/fxstat.c: New file.
+	* sysdeps/unix/sysv/linux/ia64/lxstat.c: New file.
+
+	* sysdeps/unix/sysv/linux/ia64/xstatconv.c: Deleted.
+
+	* sysdeps/unix/sysv/linux/ia64/bits/stat.h: Update after latest
+	kernel change.
+
+	* sysdeps/unix/sysv/linux/ia64/bits/types.h: Make __ino_t,
+	__nlink_t and __blkcnt_t 64 bit to accomodate new kernel stat data
+	structure.
+	Change __fsblkcnt_t and __fsfilcnt_t to 64 bit to match kernel
+	implementation.
+
+2000-06-15  Jes Sorensen  <jes@linuxcare.com>
+
+	* sysdeps/unix/sysv/linux/ia64/kernel_stat.h: Deleted.
+
+2000-06-08  Jes Sorensen  <jes@linuxcare.com>
+
+	* sysdeps/unix/sysv/linux/ia64/mmap64.c: New file.
+
 2000-06-19  Ulrich Drepper  <drepper@redhat.com>
 
 	* iconv/gconv_int.h (strict gconv_module): Remove all members
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/stat.h b/sysdeps/unix/sysv/linux/ia64/bits/stat.h
index 6afd556597..421d0c5a48 100644
--- a/sysdeps/unix/sysv/linux/ia64/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/ia64/bits/stat.h
@@ -31,30 +31,23 @@
 struct stat
   {
     __dev_t st_dev;		/* Device.  */
-#ifdef __USE_FILE_OFFSET64
-    __ino64_t st_ino;		/* File serial number.  */
-#else
     __ino_t st_ino;		/* File serial number.	*/
-    int __pad1;
-#endif
-    __mode_t st_mode;		/* File mode.  */
     __nlink_t st_nlink;		/* Link count.  */
+    __mode_t st_mode;		/* File mode.  */
     __uid_t st_uid;		/* User ID of the file's owner.	*/
     __gid_t st_gid;		/* Group ID of the file's group.*/
+    int pad0;
     __dev_t st_rdev;		/* Device number, if device.  */
     __off_t st_size;		/* Size of file, in bytes.  */
     __time_t st_atime;		/* Time of last access.  */
+    long int __reserved0;	/* Reserved for atime.nanoseconds.  */
     __time_t st_mtime;		/* Time of last modification.  */
+    long int __reserved1;	/* Reserved for mtime.nanoseconds.  */
     __time_t st_ctime;		/* Time of last status change.  */
-#ifdef __USE_FILE_OFFSET64
-    __blkcnt64_t st_blocks;	/* Nr. 512-byte blocks allocated.  */
-#else
+    long int __reserved2;	/* Reserved for ctime.nanoseconds.  */
     __blkcnt_t st_blocks;	/* Nr. 512-byte blocks allocated.  */
-    int __pad2;
-#endif
     __blksize_t st_blksize;	/* Optimal block size for I/O.  */
-    int __pad3;
-    long __unused[6];
+    long int __unused[3];
   };
 
 #ifdef __USE_LARGEFILE64
@@ -63,19 +56,22 @@ struct stat64
   {
     __dev_t st_dev;		/* Device.  */
     __ino64_t st_ino;		/* File serial number.  */
-    __mode_t st_mode;		/* File mode.  */
     __nlink_t st_nlink;		/* Link count.  */
+    __mode_t st_mode;		/* File mode.  */
     __uid_t st_uid;		/* User ID of the file's owner.	*/
     __gid_t st_gid;		/* Group ID of the file's group.*/
+    int pad0;
     __dev_t st_rdev;		/* Device number, if device.  */
     __off_t st_size;		/* Size of file, in bytes.  */
     __time_t st_atime;		/* Time of last access.  */
+    long int __reserved0;	/* Reserved for atime.nanoseconds.  */
     __time_t st_mtime;		/* Time of last modification.  */
+    long int __reserved1;	/* Reserved for mtime.nanoseconds.  */
     __time_t st_ctime;		/* Time of last status change.  */
+    long int __reserved2;	/* Reserved for ctime.nanoseconds.  */
     __blkcnt64_t st_blocks;	/* Nr. 512-byte blocks allocated.  */
     __blksize_t st_blksize;	/* Optimal block size for I/O.  */
-    int __pad3;
-    long __unused[6];
+    long int __unused[3];
   };
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/types.h b/sysdeps/unix/sysv/linux/ia64/bits/types.h
index a94c8a99ae..48ef3c1257 100644
--- a/sysdeps/unix/sysv/linux/ia64/bits/types.h
+++ b/sysdeps/unix/sysv/linux/ia64/bits/types.h
@@ -48,10 +48,10 @@ typedef __quad_t *__qaddr_t;
 typedef __uint64_t __dev_t;		/* Type of device numbers.  */
 typedef __uint32_t __uid_t;		/* Type of user identifications.  */
 typedef __uint32_t __gid_t;		/* Type of group identifications.  */
-typedef __uint32_t __ino_t;		/* Type of file serial numbers.  */
+typedef __uint64_t __ino_t;		/* Type of file serial numbers.  */
 typedef __uint64_t __ino64_t;		/*  "" (LFS) */
 typedef __uint32_t __mode_t;		/* Type of file attribute bitmasks.  */
-typedef __uint32_t __nlink_t; 		/* Type of file link counts.  */
+typedef __uint64_t __nlink_t; 		/* Type of file link counts.  */
 typedef __int64_t  __off_t;		/* Type of file sizes and offsets.  */
 typedef __int64_t  __off64_t;		/*  "" (LFS) */
 typedef __int64_t  __loff_t;		/* Type of file sizes and offsets.  */
@@ -59,11 +59,11 @@ typedef __int32_t  __pid_t;		/* Type of process identifications.  */
 typedef __int64_t  __ssize_t;		/* Type of a byte count, or error.  */
 typedef __uint64_t  __rlim_t;		/* Type of resource counts.  */
 typedef __uint64_t  __rlim64_t;		/*  "" (LFS) */
-typedef __int32_t  __blkcnt_t;		/* Type to count nr disk blocks.  */
+typedef __int64_t  __blkcnt_t;		/* Type to count nr disk blocks.  */
 typedef __int64_t  __blkcnt64_t;	/*  "" (LFS) */
-typedef __uint32_t __fsblkcnt_t;	/* Type to count file system blocks.  */
+typedef __uint64_t __fsblkcnt_t;	/* Type to count file system blocks.  */
 typedef __uint64_t __fsblkcnt64_t;	/*  "" (LFS) */
-typedef __uint32_t __fsfilcnt_t;	/* Type to count file system inodes.  */
+typedef __uint64_t __fsfilcnt_t;	/* Type to count file system inodes.  */
 typedef __uint64_t __fsfilcnt64_t;	/*  "" (LFS) */
 typedef __uint32_t __id_t;		/* General type for IDs.  */
 
diff --git a/sysdeps/unix/sysv/linux/ia64/fxstat.c b/sysdeps/unix/sysv/linux/ia64/fxstat.c
new file mode 100644
index 0000000000..bbf3a2a2ae
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/ia64/fxstat.c
@@ -0,0 +1,42 @@
+/* fxstat using old-style Unix fstat system call.
+   Copyright (C) 1991, 95, 96, 97, 98, 2000 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* Ho hum, since xstat == xstat64 we must get rid of the prototype or gcc
+   will complain since they don't strictly match.  */
+#define __fxstat64 __fxstat64_disable
+
+#include <errno.h>
+#include <stddef.h>
+#include <sys/stat.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+
+extern int __syscall_fstat (int, struct stat *);
+
+/* Get information about the file FD in BUF.  */
+int
+__fxstat (int vers, int fd, struct stat *buf)
+{
+  return INLINE_SYSCALL (fstat, 2, fd, buf);
+}
+
+weak_alias (__fxstat, _fxstat);
+#undef __fxstat64
+strong_alias (__fxstat, __fxstat64);
diff --git a/sysdeps/unix/sysv/linux/ia64/kernel_stat.h b/sysdeps/unix/sysv/linux/ia64/kernel_stat.h
deleted file mode 100644
index a695c1aac7..0000000000
--- a/sysdeps/unix/sysv/linux/ia64/kernel_stat.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Definition of `struct stat' used in the kernel.  */
-
-struct kernel_stat {
-	unsigned int	st_dev;
-	unsigned int	st_ino;
-	unsigned int	st_mode;
-	unsigned int	st_nlink;
-	unsigned int	st_uid;
-	unsigned int	st_gid;
-	unsigned int	st_rdev;
-	unsigned int	__pad1;
-	unsigned long	st_size;
-	unsigned long	st_atime;
-	unsigned long	st_mtime;
-	unsigned long	st_ctime;
-	unsigned int	st_blksize;
-	int		st_blocks;
-	unsigned int	__unused1;
-	unsigned int	__unused2;
-};
-
-#define _HAVE___PAD1
-#define _HAVE___UNUSED1
-#define _HAVE___UNUSED2
-
-#define XSTAT_IS_XSTAT64 1
diff --git a/sysdeps/unix/sysv/linux/ia64/lxstat.c b/sysdeps/unix/sysv/linux/ia64/lxstat.c
new file mode 100644
index 0000000000..463239c361
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/ia64/lxstat.c
@@ -0,0 +1,42 @@
+/* lxstat using old-style Unix fstat system call.
+   Copyright (C) 1991, 95, 96, 97, 98, 2000 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* Ho hum, since xstat == xstat64 we must get rid of the prototype or gcc
+   will complain since they don't strictly match.  */
+#define __lxstat64 __lxstat64_disable
+
+#include <errno.h>
+#include <stddef.h>
+#include <sys/stat.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+
+extern int __syscall_lstat (const char *, struct stat *);
+
+/* Get information about the file FD in BUF.  */
+int
+__lxstat (int vers, const char *name, struct stat *buf)
+{
+  return INLINE_SYSCALL (lstat, 2, name, buf);
+}
+
+weak_alias (__lxstat, _lxstat);
+#undef __lxstat64
+strong_alias (__lxstat, __lxstat64);
diff --git a/sysdeps/unix/sysv/linux/ia64/mmap64.c b/sysdeps/unix/sysv/linux/ia64/mmap64.c
new file mode 100644
index 0000000000..0dbd384a6a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/ia64/mmap64.c
@@ -0,0 +1 @@
+/* mmap64 is the same as mmap. */
diff --git a/sysdeps/unix/sysv/linux/ia64/xstat.c b/sysdeps/unix/sysv/linux/ia64/xstat.c
new file mode 100644
index 0000000000..99ab5b6e5b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/ia64/xstat.c
@@ -0,0 +1,42 @@
+/* xstat using old-style Unix stat system call.
+   Copyright (C) 1991, 95, 96, 97, 98, 2000 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* Ho hum, since xstat == xstat64 we must get rid of the prototype or gcc
+   will complain since they don't strictly match.  */
+#define __xstat64 __xstat64_disable
+
+#include <errno.h>
+#include <stddef.h>
+#include <sys/stat.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+
+extern int __syscall_stat (const char *, struct stat *);
+
+/* Get information about the file NAME in BUF.  */
+int
+__xstat (int vers, const char *name, struct stat *buf)
+{
+  return INLINE_SYSCALL (stat, 2, name, buf);
+}
+
+weak_alias (__xstat, _xstat);
+#undef __xstat64
+strong_alias (__xstat, __xstat64);
diff --git a/sysdeps/unix/sysv/linux/ia64/xstatconv.c b/sysdeps/unix/sysv/linux/ia64/xstatconv.c
deleted file mode 100644
index aa39c06023..0000000000
--- a/sysdeps/unix/sysv/linux/ia64/xstatconv.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Convert between the kernel's `struct stat' format, and libc's.
-   Copyright (C) 1997, 2000 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#include <string.h>
-
-
-static inline int
-xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
-{
-  switch (vers)
-    {
-    case _STAT_VER_KERNEL:
-      /* Nothing to do.  The struct is in the form the kernel expects.
-	 We should have short-circuted before we got here, but for
-	 completeness... */
-      *(struct kernel_stat *) ubuf = *kbuf;
-      break;
-
-    case _STAT_VER_LINUX:
-      {
-	struct stat64 *buf = ubuf;
-
-	buf->st_dev = kbuf->st_dev;
-	buf->st_ino = kbuf->st_ino;
-	buf->st_mode = kbuf->st_mode;
-	buf->st_nlink = kbuf->st_nlink;
-	buf->st_uid = kbuf->st_uid;
-	buf->st_gid = kbuf->st_gid;
-	buf->st_rdev = kbuf->st_rdev;
-	buf->st_size = kbuf->st_size;
-	buf->st_atime = kbuf->st_atime;
-	buf->st_mtime = kbuf->st_mtime;
-	buf->st_ctime = kbuf->st_ctime;
-	buf->st_blocks = kbuf->st_blocks;
-	buf->st_blksize = kbuf->st_blksize;
-	buf->__pad3 = 0;
-	buf->__unused[0] = 0;
-	buf->__unused[1] = 0;
-	buf->__unused[2] = 0;
-	buf->__unused[3] = 0;
-	buf->__unused[4] = 0;
-	buf->__unused[5] = 0;
-      }
-      break;
-
-    default:
-      __set_errno (EINVAL);
-      return -1;
-    }
-
-  return 0;
-}