1999-12-18  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/i386/setrlimit.c: Declare local variable
	result if necessary.

	* sysdeps/unix/sysv/linux/i386/bits/resource.h: Don't depend on the
	unreliable kernel headers.
	* sysdeps/unix/sysv/linux/bits/resource.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/resource.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/resource.h: New file.
	* sysdeps/unix/sysv/linux/mips/bits/resource.h: New file.

1999-12-18  Andreas Jaeger  <aj@suse.de>

	* config.make.in (datadir): Added.
	Closes PR libc/1491. Patch by dervishd@jazzfree.com.

1999-12-18  Andreas Jaeger  <aj@suse.de>

	* sysdeps/unix/sysv/linux/ftruncate64.c (ftruncate64): Save and
	set errno.
	* sysdeps/unix/sysv/linux/truncate64.c (truncate64): Likewise.

1999-12-18  Andreas Jaeger  <aj@suse.de>

	* sysdeps/unix/sysv/linux/fxstat64.c: Rewrite to use fstat64
	syscall if available.
	* sysdeps/unix/sysv/linux/lxstat64.c: Likewise for lstat64.
	* sysdeps/unix/sysv/linux/xstat64.c: Likewise for stat64.

	* sysdeps/unix/sysv/linux/kernel-features.h
	(__ASSUME_STAT64_SYSCALL): New.

1999-12-17  Scott Bambrough  <scottb@netwinder.org>

	* sysdeps/arm/dl-machine.h (CLEAR_CACHE): New macro to force a
	cache flush.
	* elf/dl-reloc.c (_dl_relocate_object): Add call to flush cache
	after .text segment fixups.

1999-12-16  Andreas Jaeger  <aj@suse.de>

	* rt/aio.h: Remove erroneous __restrict declarations.

1999-12-18  Ulrich Drepper  <drepper@cygnus.com>

	* scripts/rellns-sh: Find pwd program also in /usr/bin and let shell
	do the job if it is there neither.
	Patch by David R. Conrad <drc@adni.net> (PR libc/1485).

1999-12-16  Andreas Jaeger  <aj@suse.de>

	* sysdeps/ieee754/bits/nan.h (NAN): Rename union to avoid
	duplicate definition with function __nan.
	Closes PR libc/1487 reported by <diana@kai.com>.

	* string/bits/string2.h (__strsep): Help gcc optimizing string access.
This commit is contained in:
Ulrich Drepper 1999-12-19 00:04:05 +00:00
parent b85697f61d
commit 63a34b0f01
18 changed files with 634 additions and 123 deletions

View File

@ -1,7 +1,62 @@
1999-12-18 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/i386/setrlimit.c: Declare local variable
result if necessary.
* sysdeps/unix/sysv/linux/i386/bits/resource.h: Don't depend on the
unreliable kernel headers.
* sysdeps/unix/sysv/linux/bits/resource.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/resource.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/resource.h: New file.
* sysdeps/unix/sysv/linux/mips/bits/resource.h: New file.
1999-12-18 Andreas Jaeger <aj@suse.de>
* config.make.in (datadir): Added.
Closes PR libc/1491. Patch by dervishd@jazzfree.com.
1999-12-18 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/ftruncate64.c (ftruncate64): Save and
set errno.
* sysdeps/unix/sysv/linux/truncate64.c (truncate64): Likewise.
1999-12-18 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/fxstat64.c: Rewrite to use fstat64
syscall if available.
* sysdeps/unix/sysv/linux/lxstat64.c: Likewise for lstat64.
* sysdeps/unix/sysv/linux/xstat64.c: Likewise for stat64.
* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_STAT64_SYSCALL): New.
1999-12-17 Scott Bambrough <scottb@netwinder.org>
* sysdeps/arm/dl-machine.h (CLEAR_CACHE): New macro to force a
cache flush.
* elf/dl-reloc.c (_dl_relocate_object): Add call to flush cache
after .text segment fixups.
1999-12-16 Andreas Jaeger <aj@suse.de>
* rt/aio.h: Remove erroneous __restrict declarations.
1999-12-18 Ulrich Drepper <drepper@cygnus.com>
* scripts/rellns-sh: Find pwd program also in /usr/bin and let shell
do the job if it is there neither.
Patch by David R. Conrad <drc@adni.net> (PR libc/1485).
1999-12-16 Andreas Jaeger <aj@suse.de>
* sysdeps/ieee754/bits/nan.h (NAN): Rename union to avoid
duplicate definition with function __nan.
Closes PR libc/1487 reported by <diana@kai.com>.
1999-12-17 Ulrich Drepper <drepper@cygnus.com>
* string/bits/string2.h (__strtok_r_1c): Help gcc optimizing string
access.
* string/bits/string2.h (__strsep): Help gcc optimizing string access.
* locale/programs/ld-collate.c: Implement handling of absolute
ellipsis. Parsing of file and constructing the internal data

View File

@ -131,6 +131,10 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
if (__mprotect (mapstart, mapend - mapstart, prot) < 0)
_dl_signal_error (errno, l->l_name,
"can't restore segment prot after reloc");
#ifdef CLEAR_CACHE
CLEAR_CACHE (mapstart, mapend);
#endif
}
}
}

View File

@ -172,7 +172,7 @@ extern int __REDIRECT (aio_write, (struct aiocb *__aiocbp) __THROW,
aio_write64);
extern int __REDIRECT (lio_listio,
(int __mode, struct aiocb *__const __restrict __list[],
(int __mode, struct aiocb *__const __list[],
int __nent, struct sigevent *__restrict __sig) __THROW,
lio_listio64);
@ -186,7 +186,7 @@ extern int __REDIRECT (aio_cancel,
aio_cancel64);
extern int __REDIRECT (aio_suspend,
(__const struct aiocb *__const __restrict __list[],
(__const struct aiocb *__const __list[],
int __nent,
__const struct timespec *__restrict __timeout) __THROW,
aio_suspend64);

View File

@ -22,15 +22,23 @@ if test $# -ne 2; then
exit 1
fi
if test -x /bin/pwd; then
pwd=/bin/pwd
elif test -x /usr/bin/pwd; then
pwd=/usr/bin/pwd
else
pwd='pwd'
fi
# Make both paths absolute.
if test -d $1; then
to=`cd $1 && /bin/pwd`
to=`cd $1 && $pwd`
else
temp=`echo $1 | sed 's%/*[^/]*$%%'`
if test -z "$temp"; then
to=`/bin/pwd`
to=`$pwd`
else
to=`cd $temp && /bin/pwd`
to=`cd $temp && $pwd`
fi
to="$to/`echo $1 | sed 's%.*/\([^/][^/]*\)$%\1%'`"
fi
@ -43,9 +51,9 @@ else
fi
if test -z "$from"; then
from=`/bin/pwd | sed 's%^/%%'`
from=`$pwd | sed 's%^/%%'`
else
from=`cd $from && /bin/pwd | sed 's%^/%%'`
from=`cd $from && $pwd | sed 's%^/%%'`
fi
while test -n "$to" && test -n "$from"; do

View File

@ -32,6 +32,14 @@
&& VALID_ELF_OSABI (hdr[EI_OSABI]) \
&& VALID_ELF_ABIVERSION (hdr[EI_ABIVERSION])
#define CLEAR_CACHE(BEG,END) \
{ \
register unsigned long _beg __asm ("a1") = (unsigned long)(BEG); \
register unsigned long _end __asm ("a2") = (unsigned long)((END) - (BEG));\
register unsigned long _flg __asm ("a3") = 0; \
__asm __volatile ("swi 0x9f0002"); \
}
/* Return nonzero iff E_MACHINE is compatible with the running host. */
static inline int __attribute__ ((unused))
elf_machine_matches_host (Elf32_Half e_machine)

View File

@ -1,5 +1,5 @@
/* `NAN' constant for IEEE 754 machines.
Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1992, 1996, 1997, 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
@ -42,7 +42,7 @@
# define __nan_bytes { 0, 0, 0xc0, 0x7f }
# endif
static union { unsigned char __c[4]; float __d; } __nan = { __nan_bytes };
# define NAN (__nan.__d)
static union { unsigned char __c[4]; float __d; } __nan_union = { __nan_bytes };
# define NAN (__nan_union.__d)
#endif /* GCC. */

View File

@ -0,0 +1,204 @@
/* Bit values & structures for resource limits. Alpha/Linux version.
Copyright (C) 1994, 1996, 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. */
#ifndef _SYS_RESOURCE_H
# error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
#endif
#include <bits/types.h>
/* Transmute defines to enumerations. The macro re-definitions are
necessary because some programs want to test for operating system
features with #ifdef RUSAGE_SELF. In ISO C the reflexive
definition is a no-op. */
/* Kinds of resource limit. */
enum __rlimit_resource
{
/* Per-process CPU limit, in seconds. */
RLIMIT_CPU = 0,
#define RLIMIT_CPU RLIMIT_CPU
/* Largest file that can be created, in bytes. */
RLIMIT_FSIZE = 1,
#define RLIMIT_FSIZE RLIMIT_FSIZE
/* Maximum size of data segment, in bytes. */
RLIMIT_DATA = 2,
#define RLIMIT_DATA RLIMIT_DATA
/* Maximum size of stack segment, in bytes. */
RLIMIT_STACK = 3,
#define RLIMIT_STACK RLIMIT_STACK
/* Largest core file that can be created, in bytes. */
RLIMIT_CORE = 4,
#define RLIMIT_CORE RLIMIT_CORE
/* Largest resident set size, in bytes.
This affects swapping; processes that are exceeding their
resident set size will be more likely to have physical memory
taken from them. */
RLIMIT_RSS = 5,
#define RLIMIT_RSS RLIMIT_RSS
/* Number of open files. */
RLIMIT_NOFILE = 6,
RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */
#define RLIMIT_NOFILE RLIMIT_NOFILE
#define RLIMIT_OFILE RLIMIT_OFILE
/* Address space limit (?) */
RLIMIT_AS = 7,
#define RLIMIT_AS RLIMIT_AS
/* Number of processes. */
RLIMIT_NPROC = 8,
#define RLIMIT_NPROC RLIMIT_NPROC
/* Locked-in-memory address space. */
RLIMIT_MEMLOCK = 9,
#define RLIMIT_MEMLOCK RLIMIT_MEMLOCK
RLIM_NLIMITS = 10
#define RLIMIT_NLIMITS RLIMIT_NLIMITS
#define RLIM_NLIMITS RLIM_NLIMITS
};
/* Value to indicate that there is no limit. */
#ifndef __USE_FILE_OFFSET64
# define RLIM_INFINITY ((long int)(~0UL >> 1))
#else
# define RLIM_INFINITY 0x7fffffffffffffffLL
#endif
#ifdef __USE_LARGEFILE64
# define RLIM64_INFINITY 0x7fffffffffffffffLL
#endif
/* We can represent all limits. */
#define RLIM_SAVED_MAX RLIM_INFINITY
#define RLIM_SAVED_CUR RLIM_INFINITY
/* Type for resource quantity measurement. */
#ifndef __USE_FILE_OFFSET64
typedef __rlim_t rlim_t;
#else
typedef __rlim64_t rlim_t;
#endif
#ifdef __USE_LARGEFILE64
typedef __rlim64_t rlim64_t;
#endif
struct rlimit
{
/* The current (soft) limit. */
rlim_t rlim_cur;
/* The hard limit. */
rlim_t rlim_max;
};
#ifdef __USE_LARGEFILE64
struct rlimit64
{
/* The current (soft) limit. */
rlim64_t rlim_cur;
/* The hard limit. */
rlim64_t rlim_max;
};
#endif
/* Whose usage statistics do you want? */
enum __rusage_who
{
/* The calling process. */
RUSAGE_SELF = 0,
#define RUSAGE_SELF RUSAGE_SELF
/* All of its terminated child processes. */
RUSAGE_CHILDREN = -1,
#define RUSAGE_CHILDREN RUSAGE_CHILDREN
/* Both. */
RUSAGE_BOTH = -2
#define RUSAGE_BOTH RUSAGE_BOTH
};
#define __need_timeval
#include <bits/time.h> /* For `struct timeval'. */
/* Structure which says how much of each resource has been used. */
struct rusage
{
/* Total amount of user time used. */
struct timeval ru_utime;
/* Total amount of system time used. */
struct timeval ru_stime;
/* Maximum resident set size (in kilobytes). */
long int ru_maxrss;
/* Amount of sharing of text segment memory
with other processes (kilobyte-seconds). */
long int ru_ixrss;
/* Amount of data segment memory used (kilobyte-seconds). */
long int ru_idrss;
/* Amount of stack memory used (kilobyte-seconds). */
long int ru_isrss;
/* Number of soft page faults (i.e. those serviced by reclaiming
a page from the list of pages awaiting reallocation. */
long int ru_minflt;
/* Number of hard page faults (i.e. those that required I/O). */
long int ru_majflt;
/* Number of times a process was swapped out of physical memory. */
long int ru_nswap;
/* Number of input operations via the file system. Note: This
and `ru_oublock' do not include operations with the cache. */
long int ru_inblock;
/* Number of output operations via the file system. */
long int ru_oublock;
/* Number of IPC messages sent. */
long int ru_msgsnd;
/* Number of IPC messages received. */
long int ru_msgrcv;
/* Number of signals delivered. */
long int ru_nsignals;
/* Number of voluntary context switches, i.e. because the process
gave up the process before it had to (usually to wait for some
resource to be available). */
long int ru_nvcsw;
/* Number of involuntary context switches, i.e. a higher priority process
became runnable or the current process used up its time slice. */
long int ru_nivcsw;
};
/* Priority limits. */
#define PRIO_MIN -20 /* Minimum priority a process can have. */
#define PRIO_MAX 20 /* Maximum priority a process can have. */
/* The type of the WHICH argument to `getpriority' and `setpriority',
indicating what flavor of entity the WHO argument specifies. */
enum __priority_which
{
PRIO_PROCESS = 0, /* WHO is a process ID. */
#define PRIO_PROCESS PRIO_PROCESS
PRIO_PGRP = 1, /* WHO is a process group ID. */
#define PRIO_PGRP PRIO_PGRP
PRIO_USER = 2 /* WHO is a user ID. */
#define PRIO_USER PRIO_USER
};

View File

@ -33,73 +33,51 @@
enum __rlimit_resource
{
/* Per-process CPU limit, in seconds. */
_RLIMIT_CPU = RLIMIT_CPU,
#undef RLIMIT_CPU
RLIMIT_CPU = _RLIMIT_CPU,
RLIMIT_CPU = 0,
#define RLIMIT_CPU RLIMIT_CPU
/* Largest file that can be created, in bytes. */
_RLIMIT_FSIZE = RLIMIT_FSIZE,
#undef RLIMIT_FSIZE
RLIMIT_FSIZE = _RLIMIT_FSIZE,
RLIMIT_FSIZE = 1,
#define RLIMIT_FSIZE RLIMIT_FSIZE
/* Maximum size of data segment, in bytes. */
_RLIMIT_DATA = RLIMIT_DATA,
#undef RLIMIT_DATA
RLIMIT_DATA = _RLIMIT_DATA,
RLIMIT_DATA = 2,
#define RLIMIT_DATA RLIMIT_DATA
/* Maximum size of stack segment, in bytes. */
_RLIMIT_STACK = RLIMIT_STACK,
#undef RLIMIT_STACK
RLIMIT_STACK = _RLIMIT_STACK,
RLIMIT_STACK = 3,
#define RLIMIT_STACK RLIMIT_STACK
/* Largest core file that can be created, in bytes. */
_RLIMIT_CORE = RLIMIT_CORE,
#undef RLIMIT_CORE
RLIMIT_CORE = _RLIMIT_CORE,
RLIMIT_CORE = 4,
#define RLIMIT_CORE RLIMIT_CORE
/* Largest resident set size, in bytes.
This affects swapping; processes that are exceeding their
resident set size will be more likely to have physical memory
taken from them. */
_RLIMIT_RSS = RLIMIT_RSS,
#undef RLIMIT_RSS
RLIMIT_RSS = _RLIMIT_RSS,
RLIMIT_RSS = 5,
#define RLIMIT_RSS RLIMIT_RSS
/* Number of open files. */
_RLIMIT_NOFILE = RLIMIT_NOFILE,
#undef RLIMIT_NOFILE
RLIMIT_NOFILE = _RLIMIT_NOFILE,
RLIMIT_NOFILE = 7,
RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */
#define RLIMIT_NOFILE RLIMIT_NOFILE
#define RLIMIT_OFILE RLIMIT_OFILE
/* Address space limit (?) */
_RLIMIT_AS = RLIMIT_AS,
#undef RLIMIT_AS
RLIMIT_AS = _RLIMIT_AS,
RLIMIT_AS = 9,
#define RLIMIT_AS RLIMIT_AS
/* Number of processes. */
_RLIMIT_NPROC = RLIMIT_NPROC,
#undef RLIMIT_NPROC
RLIMIT_NPROC = _RLIMIT_NPROC,
RLIMIT_NPROC = 6,
#define RLIMIT_NPROC RLIMIT_NPROC
/* Locked-in-memory address space. */
_RLIMIT_MEMLOCK = RLIMIT_MEMLOCK,
#undef RLIMIT_MEMLOCK
RLIMIT_MEMLOCK = _RLIMIT_MEMLOCK,
RLIMIT_MEMLOCK = 8,
#define RLIMIT_MEMLOCK RLIMIT_MEMLOCK
RLIMIT_NLIMITS = RLIM_NLIMITS,
#undef RLIM_NLIMITS
RLIM_NLIMITS = RLIMIT_NLIMITS
RLIM_NLIMITS = 10
#define RLIMIT_NLIMITS RLIMIT_NLIMITS
#define RLIM_NLIMITS RLIM_NLIMITS
};

View File

@ -43,6 +43,9 @@ ftruncate64 (fd, length)
{
unsigned int low = length & 0xffffffff;
unsigned int high = length >> 32;
#ifndef __ASSUME_TRUNCATE64_SYSCALL
int saved_errno = errno;
#endif
int result = INLINE_SYSCALL (ftruncate64, 3, fd, low, high);
#ifndef __ASSUME_TRUNCATE64_SYSCALL
@ -51,6 +54,7 @@ ftruncate64 (fd, length)
return result;
#ifndef __ASSUME_TRUNCATE64_SYSCALL
__set_errno (saved_errno);
have_no_ftruncate64 = 1;
#endif
}

View File

@ -1,5 +1,5 @@
/* fxstat64 using old-style Unix fstat system call.
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
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
@ -25,20 +25,46 @@
#include <sysdep.h>
#include <sys/syscall.h>
#include <xstatconv.c>
#if __ASSUME_STAT64_SYSCALL == 0
# include <xstatconv.c>
#endif
extern int __syscall_fstat (int, struct kernel_stat *);
#ifdef __NR_fstat64
extern int __syscall_fstat64 (int, struct stat64 *);
# if __ASSUME_STAT64_SYSCALL == 0
/* The variable is shared between all wrappers around *stat64 calls. */
extern int have_no_stat64;
# endif
#endif
/* Get information about the file FD in BUF. */
int
__fxstat64 (int vers, int fd, struct stat64 *buf)
{
struct kernel_stat kbuf;
#if __ASSUME_STAT64_SYSCALL > 0
return INLINE_SYSCALL (fstat64, 2, fd, &buf);
#else
int result;
struct kernel_stat kbuf;
# if defined __NR_fstat64
if (! have_no_stat64)
{
int saved_errno = errno;
result = INLINE_SYSCALL (fstat64, 2, fd, &buf);
if (result != -1 || errno != ENOSYS)
return result;
__set_errno (saved_errno);
have_no_stat64 = 1;
}
# endif
result = INLINE_SYSCALL (fstat, 2, fd, &kbuf);
if (result == 0)
result = xstat64_conv (vers, &kbuf, buf);
return result;
#endif
}

View File

@ -21,7 +21,6 @@
# error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
#endif
#include <asm/resource.h>
#include <bits/types.h>
/* Transmute defines to enumerations. The macro re-definitions are
@ -33,72 +32,51 @@
enum __rlimit_resource
{
/* Per-process CPU limit, in seconds. */
_RLIMIT_CPU = RLIMIT_CPU,
#undef RLIMIT_CPU
RLIMIT_CPU = _RLIMIT_CPU,
RLIMIT_CPU = 0,
#define RLIMIT_CPU RLIMIT_CPU
/* Largest file that can be created, in bytes. */
_RLIMIT_FSIZE = RLIMIT_FSIZE,
#undef RLIMIT_FSIZE
RLIMIT_FSIZE = _RLIMIT_FSIZE,
RLIMIT_FSIZE = 1,
#define RLIMIT_FSIZE RLIMIT_FSIZE
/* Maximum size of data segment, in bytes. */
_RLIMIT_DATA = RLIMIT_DATA,
#undef RLIMIT_DATA
RLIMIT_DATA = _RLIMIT_DATA,
RLIMIT_DATA = 2,
#define RLIMIT_DATA RLIMIT_DATA
/* Maximum size of stack segment, in bytes. */
_RLIMIT_STACK = RLIMIT_STACK,
#undef RLIMIT_STACK
RLIMIT_STACK = _RLIMIT_STACK,
RLIMIT_STACK = 3,
#define RLIMIT_STACK RLIMIT_STACK
/* Largest core file that can be created, in bytes. */
_RLIMIT_CORE = RLIMIT_CORE,
#undef RLIMIT_CORE
RLIMIT_CORE = _RLIMIT_CORE,
RLIMIT_CORE = 4,
#define RLIMIT_CORE RLIMIT_CORE
/* Largest resident set size, in bytes.
This affects swapping; processes that are exceeding their
resident set size will be more likely to have physical memory
taken from them. */
_RLIMIT_RSS = RLIMIT_RSS,
#undef RLIMIT_RSS
RLIMIT_RSS = _RLIMIT_RSS,
RLIMIT_RSS = 5,
#define RLIMIT_RSS RLIMIT_RSS
/* Number of open files. */
_RLIMIT_NOFILE = RLIMIT_NOFILE,
#undef RLIMIT_NOFILE
RLIMIT_NOFILE = _RLIMIT_NOFILE,
RLIMIT_NOFILE = 7,
RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */
#define RLIMIT_NOFILE RLIMIT_NOFILE
#define RLIMIT_OFILE RLIMIT_OFILE
/* Address space limit (?) */
_RLIMIT_AS = RLIMIT_AS,
#undef RLIMIT_AS
RLIMIT_AS = _RLIMIT_AS,
/* Address space limit. */
RLIMIT_AS = 9,
#define RLIMIT_AS RLIMIT_AS
/* Number of processes. */
_RLIMIT_NPROC = RLIMIT_NPROC,
#undef RLIMIT_NPROC
RLIMIT_NPROC = _RLIMIT_NPROC,
RLIMIT_NPROC = 6,
#define RLIMIT_NPROC RLIMIT_NPROC
/* Locked-in-memory address space. */
_RLIMIT_MEMLOCK = RLIMIT_MEMLOCK,
#undef RLIMIT_MEMLOCK
RLIMIT_MEMLOCK = _RLIMIT_MEMLOCK,
RLIMIT_MEMLOCK = 8,
#define RLIMIT_MEMLOCK RLIMIT_MEMLOCK
RLIMIT_NLIMITS = RLIM_NLIMITS,
#undef RLIM_NLIMITS
RLIMIT_NLIMITS = 10,
RLIM_NLIMITS = RLIMIT_NLIMITS
#define RLIMIT_NLIMITS RLIMIT_NLIMITS
#define RLIM_NLIMITS RLIM_NLIMITS

View File

@ -50,7 +50,7 @@ __new_setrlimit (enum __rlimit_resource resource, const struct rlimit *rlimits)
/* Check if the new ugetrlimit syscall exists. We must do this
first because older kernels don't reject negative rlimit
values in setrlimit. */
result = INLINE_SYSCALL (ugetrlimit, 2, resource, &rlimits_small);
int result = INLINE_SYSCALL (ugetrlimit, 2, resource, &rlimits_small);
if (result != -1 || errno != ENOSYS)
/* The syscall exists. */
__have_no_new_getrlimit = -1;

View File

@ -85,7 +85,12 @@
# define __ASSUME_TRUNCATE64_SYSCALL 1
#endif
/* On x86 the truncate64/ftruncate64 syscalls were introduced in 2.3.31. */
/* On x86 the mmap2 syscall was introduced in 2.3.31. */
#if __LINUX_KERNEL_VERSION >= 131871 && defined __i386__
# define __ASSUME_MMAP2_SYSCALL 1
#endif
/* On x86 the stat64/lstat64/fstat64 syscalls were introduced in 2.3.34. */
#if __LINUX_KERNEL_VERSION >= 131874 && defined __i386__
# define __ASSUME_STAT64_SYSCALL 1
#endif

View File

@ -1,5 +1,5 @@
/* lxstat64 using old-style Unix lstat system call.
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
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
@ -25,20 +25,46 @@
#include <sysdep.h>
#include <sys/syscall.h>
#include <xstatconv.c>
#if __ASSUME_STAT64_SYSCALL == 0
# include <xstatconv.c>
#endif
extern int __syscall_lstat (const char *, struct kernel_stat *);
#ifdef __NR_lstat64
extern int __syscall_lstat64 (const char *, struct stat64 *);
# if __ASSUME_STAT64_SYSCALL == 0
/* The variable is shared between all wrappers around *stat64 calls. */
extern int have_no_stat64;
# endif
#endif
/* Get information about the file NAME in BUF. */
int
__lxstat64 (int vers, const char *name, struct stat64 *buf)
{
#ifdef __ASSUME_STAT64_SYSCALL
return INLINE_SYSCALL (lstat64, 2, name, &buf);
#else
struct kernel_stat kbuf;
int result;
# ifdef __NR_lstat64
if (! have_no_stat64)
{
int saved_errno = errno;
result = INLINE_SYSCALL (lstat64, 2, name, &kbuf);
if (result != -1 || errno != ENOSYS)
return result;
__set_errno (saved_errno);
have_no_stat64 = 1;
}
# endif
result = INLINE_SYSCALL (lstat, 2, name, &kbuf);
if (result == 0)
result = xstat64_conv (vers, &kbuf, buf);
return result;
#endif
}

View File

@ -0,0 +1,205 @@
/* Bit values & structures for resource limits. MIPS/Linux version.
Copyright (C) 1994, 1996, 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. */
#ifndef _SYS_RESOURCE_H
# error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
#endif
#include <asm/resource.h>
#include <bits/types.h>
/* Transmute defines to enumerations. The macro re-definitions are
necessary because some programs want to test for operating system
features with #ifdef RUSAGE_SELF. In ISO C the reflexive
definition is a no-op. */
/* Kinds of resource limit. */
enum __rlimit_resource
{
/* Per-process CPU limit, in seconds. */
RLIMIT_CPU = 0,
#define RLIMIT_CPU RLIMIT_CPU
/* Largest file that can be created, in bytes. */
RLIMIT_FSIZE = 1,
#define RLIMIT_FSIZE RLIMIT_FSIZE
/* Maximum size of data segment, in bytes. */
RLIMIT_DATA = 2,
#define RLIMIT_DATA RLIMIT_DATA
/* Maximum size of stack segment, in bytes. */
RLIMIT_STACK = 3,
#define RLIMIT_STACK RLIMIT_STACK
/* Largest core file that can be created, in bytes. */
RLIMIT_CORE = 4,
#define RLIMIT_CORE RLIMIT_CORE
/* Largest resident set size, in bytes.
This affects swapping; processes that are exceeding their
resident set size will be more likely to have physical memory
taken from them. */
RLIMIT_RSS = 7,
#define RLIMIT_RSS RLIMIT_RSS
/* Number of open files. */
RLIMIT_NOFILE = 5,
RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */
#define RLIMIT_NOFILE RLIMIT_NOFILE
#define RLIMIT_OFILE RLIMIT_OFILE
/* Address space limit (?) */
RLIMIT_AS = 6,
#define RLIMIT_AS RLIMIT_AS
/* Number of processes. */
RLIMIT_NPROC = 8,
#define RLIMIT_NPROC RLIMIT_NPROC
/* Locked-in-memory address space. */
RLIMIT_MEMLOCK = 9,
#define RLIMIT_MEMLOCK RLIMIT_MEMLOCK
RLIM_NLIMITS = 10
#define RLIMIT_NLIMITS RLIMIT_NLIMITS
#define RLIM_NLIMITS RLIM_NLIMITS
};
/* Value to indicate that there is no limit. */
#ifndef __USE_FILE_OFFSET64
# define RLIM_INFINITY ((long int)(~0UL >> 1))
#else
# define RLIM_INFINITY 0x7fffffffffffffffLL
#endif
#ifdef __USE_LARGEFILE64
# define RLIM64_INFINITY 0x7fffffffffffffffLL
#endif
/* We can represent all limits. */
#define RLIM_SAVED_MAX RLIM_INFINITY
#define RLIM_SAVED_CUR RLIM_INFINITY
/* Type for resource quantity measurement. */
#ifndef __USE_FILE_OFFSET64
typedef __rlim_t rlim_t;
#else
typedef __rlim64_t rlim_t;
#endif
#ifdef __USE_LARGEFILE64
typedef __rlim64_t rlim64_t;
#endif
struct rlimit
{
/* The current (soft) limit. */
rlim_t rlim_cur;
/* The hard limit. */
rlim_t rlim_max;
};
#ifdef __USE_LARGEFILE64
struct rlimit64
{
/* The current (soft) limit. */
rlim64_t rlim_cur;
/* The hard limit. */
rlim64_t rlim_max;
};
#endif
/* Whose usage statistics do you want? */
enum __rusage_who
{
/* The calling process. */
RUSAGE_SELF = 0,
#define RUSAGE_SELF RUSAGE_SELF
/* All of its terminated child processes. */
RUSAGE_CHILDREN = -1,
#define RUSAGE_CHILDREN RUSAGE_CHILDREN
/* Both. */
RUSAGE_BOTH = -2
#define RUSAGE_BOTH RUSAGE_BOTH
};
#define __need_timeval
#include <bits/time.h> /* For `struct timeval'. */
/* Structure which says how much of each resource has been used. */
struct rusage
{
/* Total amount of user time used. */
struct timeval ru_utime;
/* Total amount of system time used. */
struct timeval ru_stime;
/* Maximum resident set size (in kilobytes). */
long int ru_maxrss;
/* Amount of sharing of text segment memory
with other processes (kilobyte-seconds). */
long int ru_ixrss;
/* Amount of data segment memory used (kilobyte-seconds). */
long int ru_idrss;
/* Amount of stack memory used (kilobyte-seconds). */
long int ru_isrss;
/* Number of soft page faults (i.e. those serviced by reclaiming
a page from the list of pages awaiting reallocation. */
long int ru_minflt;
/* Number of hard page faults (i.e. those that required I/O). */
long int ru_majflt;
/* Number of times a process was swapped out of physical memory. */
long int ru_nswap;
/* Number of input operations via the file system. Note: This
and `ru_oublock' do not include operations with the cache. */
long int ru_inblock;
/* Number of output operations via the file system. */
long int ru_oublock;
/* Number of IPC messages sent. */
long int ru_msgsnd;
/* Number of IPC messages received. */
long int ru_msgrcv;
/* Number of signals delivered. */
long int ru_nsignals;
/* Number of voluntary context switches, i.e. because the process
gave up the process before it had to (usually to wait for some
resource to be available). */
long int ru_nvcsw;
/* Number of involuntary context switches, i.e. a higher priority process
became runnable or the current process used up its time slice. */
long int ru_nivcsw;
};
/* Priority limits. */
#define PRIO_MIN -20 /* Minimum priority a process can have. */
#define PRIO_MAX 20 /* Maximum priority a process can have. */
/* The type of the WHICH argument to `getpriority' and `setpriority',
indicating what flavor of entity the WHO argument specifies. */
enum __priority_which
{
PRIO_PROCESS = 0, /* WHO is a process ID. */
#define PRIO_PROCESS PRIO_PROCESS
PRIO_PGRP = 1, /* WHO is a process group ID. */
#define PRIO_PGRP PRIO_PGRP
PRIO_USER = 2 /* WHO is a user ID. */
#define PRIO_USER PRIO_USER
};

View File

@ -1,4 +1,4 @@
/* Bit values & structures for resource limits. Linux version.
/* Bit values & structures for resource limits. SPARC/Linux version.
Copyright (C) 1994, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -21,7 +21,6 @@
# error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
#endif
#include <asm/resource.h>
#include <bits/types.h>
/* Transmute defines to enumerations. The macro re-definitions are
@ -33,73 +32,51 @@
enum __rlimit_resource
{
/* Per-process CPU limit, in seconds. */
_RLIMIT_CPU = RLIMIT_CPU,
#undef RLIMIT_CPU
RLIMIT_CPU = _RLIMIT_CPU,
RLIMIT_CPU = 0,
#define RLIMIT_CPU RLIMIT_CPU
/* Largest file that can be created, in bytes. */
_RLIMIT_FSIZE = RLIMIT_FSIZE,
#undef RLIMIT_FSIZE
RLIMIT_FSIZE = _RLIMIT_FSIZE,
RLIMIT_FSIZE = 1,
#define RLIMIT_FSIZE RLIMIT_FSIZE
/* Maximum size of data segment, in bytes. */
_RLIMIT_DATA = RLIMIT_DATA,
#undef RLIMIT_DATA
RLIMIT_DATA = _RLIMIT_DATA,
RLIMIT_DATA = 2,
#define RLIMIT_DATA RLIMIT_DATA
/* Maximum size of stack segment, in bytes. */
_RLIMIT_STACK = RLIMIT_STACK,
#undef RLIMIT_STACK
RLIMIT_STACK = _RLIMIT_STACK,
RLIMIT_STACK = 3,
#define RLIMIT_STACK RLIMIT_STACK
/* Largest core file that can be created, in bytes. */
_RLIMIT_CORE = RLIMIT_CORE,
#undef RLIMIT_CORE
RLIMIT_CORE = _RLIMIT_CORE,
RLIMIT_CORE = 4,
#define RLIMIT_CORE RLIMIT_CORE
/* Largest resident set size, in bytes.
This affects swapping; processes that are exceeding their
resident set size will be more likely to have physical memory
taken from them. */
_RLIMIT_RSS = RLIMIT_RSS,
#undef RLIMIT_RSS
RLIMIT_RSS = _RLIMIT_RSS,
RLIMIT_RSS = 5,
#define RLIMIT_RSS RLIMIT_RSS
/* Number of open files. */
_RLIMIT_NOFILE = RLIMIT_NOFILE,
#undef RLIMIT_NOFILE
RLIMIT_NOFILE = _RLIMIT_NOFILE,
RLIMIT_NOFILE = 6,
RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */
#define RLIMIT_NOFILE RLIMIT_NOFILE
#define RLIMIT_OFILE RLIMIT_OFILE
/* Address space limit (?) */
_RLIMIT_AS = RLIMIT_AS,
#undef RLIMIT_AS
RLIMIT_AS = _RLIMIT_AS,
RLIMIT_AS = 9,
#define RLIMIT_AS RLIMIT_AS
/* Number of processes. */
_RLIMIT_NPROC = RLIMIT_NPROC,
#undef RLIMIT_NPROC
RLIMIT_NPROC = _RLIMIT_NPROC,
RLIMIT_NPROC = 7,
#define RLIMIT_NPROC RLIMIT_NPROC
/* Locked-in-memory address space. */
_RLIMIT_MEMLOCK = RLIMIT_MEMLOCK,
#undef RLIMIT_MEMLOCK
RLIMIT_MEMLOCK = _RLIMIT_MEMLOCK,
RLIMIT_MEMLOCK = 8,
#define RLIMIT_MEMLOCK RLIMIT_MEMLOCK
RLIMIT_NLIMITS = RLIM_NLIMITS,
#undef RLIM_NLIMITS
RLIM_NLIMITS = RLIMIT_NLIMITS
RLIM_NLIMITS = 10
#define RLIMIT_NLIMITS RLIMIT_NLIMITS
#define RLIM_NLIMITS RLIM_NLIMITS
};

View File

@ -43,6 +43,9 @@ truncate64 (path, length)
{
unsigned int low = length & 0xffffffff;
unsigned int high = length >> 32;
#ifndef __ASSUME_TRUNCATE64_SYSCALL
int saved_errno = errno;
#endif
int result = INLINE_SYSCALL (truncate64, 3, path, low, high);
#ifndef __ASSUME_TRUNCATE64_SYSCALL
@ -51,6 +54,7 @@ truncate64 (path, length)
return result;
#ifndef __ASSUME_TRUNCATE64_SYSCALL
__set_errno (saved_errno);
have_no_truncate64 = 1;
#endif
}

View File

@ -1,5 +1,5 @@
/* xstat64 using old-style Unix stat system call.
Copyright (C) 1991, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
Copyright (C) 1991, 1995, 1996, 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
@ -25,20 +25,49 @@
#include <sysdep.h>
#include <sys/syscall.h>
#include <xstatconv.c>
#if __ASSUME_STAT64_SYSCALL == 0
# include <xstatconv.c>
#endif
extern int __syscall_stat (const char *, struct kernel_stat *);
#ifdef __NR_stat64
extern int __syscall_fstat64 (int, struct stat64 *);
# if __ASSUME_STAT64_SYSCALL == 0
/* The variable is shared between all wrappers around *stat64 calls.
This is the definition. */
int have_no_stat64;
# endif
#endif
/* Get information about the file NAME in BUF. */
int
__xstat64 (int vers, const char *name, struct stat64 *buf)
{
#if __ASSUME_STAT64_SYSCALL > 0
return INLINE_SYSCALL (stat64, 2, name, &buf);
#else
struct kernel_stat kbuf;
int result;
# if defined __NR_stat64
if (! have_no_stat64)
{
int saved_errno = errno;
result = INLINE_SYSCALL (stat64, 2, name, &buf);
if (result != -1 || errno != ENOSYS)
return result;
__set_errno (saved_errno);
have_no_stat64 = 1;
}
# endif
result = INLINE_SYSCALL (stat, 2, name, &kbuf);
if (result == 0)
result = xstat64_conv (vers, &kbuf, buf);
return result;
#endif
}