2000-06-12  Jes Sorensen  <jes@linuxcare.com>

	* sysdeps/unix/sysv/linux/ia64/kernel_stat.h: New file.
	* sysdeps/unix/sysv/linux/ia64/xstatconv.c: New file.
	* sysdeps/unix/sysv/linux/ia64/bits/stat.h: New file.

	* sysdeps/unix/sysv/linux/ia64/fxstat64.c: New file.
	* sysdeps/unix/sysv/linux/ia64/lxstat64.c: New file.
	* sysdeps/unix/sysv/linux/ia64/xstat64.c: New file.
This commit is contained in:
Ulrich Drepper 2000-06-12 22:13:56 +00:00
parent 3846ef75cf
commit 30010c6399
11 changed files with 542 additions and 0 deletions

View File

@ -1,3 +1,13 @@
2000-06-12 Jes Sorensen <jes@linuxcare.com>
* sysdeps/unix/sysv/linux/ia64/kernel_stat.h: New file.
* sysdeps/unix/sysv/linux/ia64/xstatconv.c: New file.
* sysdeps/unix/sysv/linux/ia64/bits/stat.h: New file.
* sysdeps/unix/sysv/linux/ia64/fxstat64.c: New file.
* sysdeps/unix/sysv/linux/ia64/lxstat64.c: New file.
* sysdeps/unix/sysv/linux/ia64/xstat64.c: New file.
2000-06-12 Kazumoto Kojima <kkojima@rr.iij4u.or.jp>
Yutaka Niibe <gniibe@chroot.org>

View File

@ -1,2 +1,62 @@
*.mo
ttt
stdio-common.pot
libc-top.pot
csu.pot
assert.pot
ctype.pot
locale.pot
intl.pot
catgets.pot
math.pot
setjmp.pot
signal.pot
stdlib.pot
gnulib.pot
libio.pot
dlfcn.pot
malloc.pot
string.pot
wcsmbs.pot
time.pot
dirent.pot
grp.pot
pwd.pot
posix.pot
io.pot
termios.pot
resource.pot
misc.pot
socket.pot
sysvipc.pot
gmon.pot
iconvdata.pot
iconv.pot
manual.pot
wctype.pot
md5-crypt.pot
shadow.pot
po.pot
crypt.pot
argp.pot
linuxthreads_db.pot
linuxthreads.pot
soft-fp.pot
resolv.pot
nss.pot
localedata.pot
timezone.pot
rt.pot
debug.pot
hesiod.pot
inet.pot
bare.pot
sunrpc.pot
nis.pot
nscd.pot
streams.pot
login.pot
elf.pot
mach.pot
hurd.pot
subdirs.pot

View File

@ -0,0 +1,72 @@
/* Copyright (C) 1999, 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. */
#ifndef _FENV_H
# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
#endif
/* Define bits representing the exception. We use the bit positions
of the appropriate bits in the FPU control word. */
enum
{
FE_INEXACT = 0x04,
#define FE_INEXACT FE_INEXACT
FE_UNDERFLOW = 0x08,
#define FE_UNDERFLOW FE_UNDERFLOW
FE_OVERFLOW = 0x10,
#define FE_OVERFLOW FE_OVERFLOW
FE_DIVBYZERO = 0x20,
#define FE_DIVBYZERO FE_DIVBYZERO
FE_INVALID = 0x40,
#define FE_INVALID FE_INVALID
};
#define FE_ALL_EXCEPT \
(FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)
/* The SH FPU supports all of the four defined rounding modes. We
use again the bit positions in the FPU control word as the values
for the appropriate macros. */
enum
{
FE_TONEAREST = 0x0,
#define FE_TONEAREST FE_TONEAREST
FE_TOWARDZERO = 0x1,
#define FE_TOWARDZERO FE_TOWARDZERO
FE_UPWARD = 0x2,
#define FE_UPWARD FE_UPWARD
FE_DOWNWARD = 0x3
#define FE_DOWNWARD FE_DOWNWARD
};
/* Type representing exception flags. */
typedef unsigned short int fexcept_t;
/* Type representing floating-point environment. This function corresponds
to the layout of the block written by the `fstenv'. */
typedef struct
{
unsigned int __fpscr;
}
fenv_t;
/* If the default argument is used we use this value. */
#define FE_DFL_ENV ((fenv_t *) -1)

View File

@ -0,0 +1,105 @@
/* `HUGE_VAL' constants for IEEE 754 machines (where it is infinity).
Used by <stdlib.h> and <math.h> functions for overflow.
SH version.
Copyright (C) 1992, 1995, 1996, 1997, 1998, 1999, 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. */
#ifndef _MATH_H
# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
#endif
#include <features.h>
/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
#ifdef __GNUC__
# if __GNUC_PREREQ(2,95)
# define HUGE_VAL (0x1.0p2047)
# else
# define HUGE_VAL \
(__extension__ \
((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \
{ __l: 0x000000007ff00000ULL }).__d)
# endif
#else /* not GCC */
# include <endian.h>
typedef union { unsigned char __c[8]; double __d; } __huge_val_t;
# if __BYTE_ORDER == __BIG_ENDIAN
# define __HUGE_VAL_bytes { 0, 0, 0, 0, 0x7f, 0xf0, 0, 0 }
# endif
# if __BYTE_ORDER == __LITTLE_ENDIAN
# define __HUGE_VAL_bytes { 0, 0, 0xf0, 0x7f, 0, 0, 0, 0 }
# endif
static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
# define HUGE_VAL (__huge_val.__d)
#endif /* GCC. */
/* ISO C99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */
#ifdef __USE_ISOC99
# ifdef __GNUC__
# if __GNUC_PREREQ(2,95)
# define HUGE_VALF (0x1.0p255f)
# else
# define HUGE_VALF \
(__extension__ \
((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; }) \
{ __l: 0x7f800000UL }).__d)
# endif
# else /* not GCC */
typedef union { unsigned char __c[4]; float __f; } __huge_valf_t;
# if __BYTE_ORDER == __BIG_ENDIAN
# define __HUGE_VALF_bytes { 0x7f, 0x80, 0, 0 }
# endif
# if __BYTE_ORDER == __LITTLE_ENDIAN
# define __HUGE_VALF_bytes { 0, 0, 0x80, 0x7f }
# endif
static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes };
# define HUGE_VALF (__huge_valf.__f)
# endif /* GCC. */
/* Generally there is no separate `long double' format and it is the
same as `double'. */
# define HUGE_VALL HUGE_VAL
#endif /* __USE_ISOC99. */

View File

@ -0,0 +1,90 @@
/* Copyright (C) 1997, 1998, 1999 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. */
#if !defined _MATH_H && !defined _COMPLEX_H
# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
#endif
/* FIXME! This file describes properties of the compiler, not the machine;
it should not be part of libc!
FIXME! This file does not deal with the -fshort-double option of
gcc! */
#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
# define _MATH_H_MATHDEF 1
# ifdef __GNUC__
# if __STDC__ == 1
/* In GNU or ANSI mode, gcc leaves `float' expressions as-is. */
typedef float float_t; /* `float' expressions are evaluated as
`float'. */
typedef double double_t; /* `double' expressions are evaluated as
`double'. */
/* Signal that types stay as they were declared. */
# define FLT_EVAL_METHOD 0
/* Define `INFINITY' as value of type `float'. */
# define INFINITY HUGE_VALF
# else
/* For `gcc -traditional', `float' expressions are evaluated as `double'. */
typedef double float_t; /* `float' expressions are evaluated as
`double'. */
typedef double double_t; /* `double' expressions are evaluated as
`double'. */
/* Signal that both types are `double'. */
# define FLT_EVAL_METHOD 1
/* Define `INFINITY' as value of type `float'. */
# define INFINITY HUGE_VALF
# endif
# else
/* Wild guess at types for float_t and double_t. */
typedef double float_t;
typedef double double_t;
/* Strange compiler, we don't know how it works. */
# define FLT_EVAL_METHOD -1
/* Define `INFINITY' as value of type `float'. */
# define INFINITY HUGE_VALF
# endif
/* The values returned by `ilogb' for 0 and NaN respectively. */
# define FP_ILOGB0 0x80000001
# define FP_ILOGBNAN 0x7fffffff
/* Number of decimal digits for the `double' type. */
# define DECIMAL_DIG 15
#endif /* ISO C99 */
#ifndef __NO_LONG_DOUBLE_MATH
/* Signal that we do not really have a `long double'. The disables the
declaration of all the `long double' function variants. */
# define __NO_LONG_DOUBLE_MATH 1
#endif

View File

@ -0,0 +1,108 @@
/* Copyright (C) 1999, 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. */
#ifndef _SYS_STAT_H
# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
#endif
/* Versions of the `struct stat' data structure. */
#define _STAT_VER_KERNEL 0
#define _STAT_VER_LINUX 1
#define _STAT_VER _STAT_VER_LINUX
/* Versions of the `xmknod' interface. */
#define _MKNOD_VER_LINUX 0
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. */
__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 number, if device. */
__off_t st_size; /* Size of file, in bytes. */
__time_t st_atime; /* Time of last access. */
__time_t st_mtime; /* Time of last modification. */
__time_t st_ctime; /* Time of last status change. */
#ifdef __USE_FILE_OFFSET64
__blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */
#else
__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];
};
#ifdef __USE_LARGEFILE64
/* Note stat64 is the same shape as stat. */
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. */
__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 number, if device. */
__off_t st_size; /* Size of file, in bytes. */
__time_t st_atime; /* Time of last access. */
__time_t st_mtime; /* Time of last modification. */
__time_t st_ctime; /* Time of last status change. */
__blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */
__blksize_t st_blksize; /* Optimal block size for I/O. */
int __pad3;
long __unused[6];
};
#endif
/* Tell code we have these members. */
#define _STATBUF_ST_BLKSIZE
#define _STATBUF_ST_RDEV
/* Encoding of the file mode. */
#define __S_IFMT 0170000 /* These bits determine file type. */
/* File types. */
#define __S_IFDIR 0040000 /* Directory. */
#define __S_IFCHR 0020000 /* Character device. */
#define __S_IFBLK 0060000 /* Block device. */
#define __S_IFREG 0100000 /* Regular file. */
#define __S_IFIFO 0010000 /* FIFO. */
/* These don't actually exist on System V, but having them doesn't hurt. */
#define __S_IFLNK 0120000 /* Symbolic link. */
#define __S_IFSOCK 0140000 /* Socket. */
/* Protection bits. */
#define __S_ISUID 04000 /* Set user ID on execution. */
#define __S_ISGID 02000 /* Set group ID on execution. */
#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
#define __S_IREAD 0400 /* Read by owner. */
#define __S_IWRITE 0200 /* Write by owner. */
#define __S_IEXEC 0100 /* Execute by owner. */

View File

@ -0,0 +1 @@
/* fxstat64 is in fxstat.c */

View File

@ -0,0 +1,26 @@
/* 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

View File

@ -0,0 +1 @@
/* lxstat64 is in lxstat.c */

View File

@ -0,0 +1 @@
/* xstat64 is in xstat.c */

View File

@ -0,0 +1,68 @@
/* 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;
}