mirror of
https://sourceware.org/git/glibc.git
synced 2026-10-24 01:33:52 +03:00
Sat Oct 14 02:52:36 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* malloc/malloc.c (_malloc_internal): Performance fix. Move
if statement out of loop.
* stdio/_itoa.c, stdio/_itoa.h: Complete rewrite. Much faster
implementation using GMP functions. Contributed by
Torbjorn Granlund and Ulrich Drepper.
* stdio/test_rdwr.c: Include <errno.h>.
* sysdeps/i386/i586/Implies: New file.
New highly optimized string functions for i[345]86.
* sysdeps/i386/memchr.S, sysdeps/i386/memcmp.S: New files.
* sysdeps/i386/stpcpy.S, sysdeps/i386/stpncpy.S: New files.
* sysdeps/i386/strchr.S, sysdeps/i386/strcspn.S: New files.
* sysdeps/i386/strpbrk.S, sysdeps/i386/strrchr.S: New files.
* sysdeps/i386/strspn.S, sysdeps/i386/i486/strcat.S: New files.
* sysdeps/i386/i486/strlen.S, sysdeps/i386/i586/strchr.S: New files.
* sysdeps/i386/i586/strlen.S: New file.
* sysdeps/i386/memchr.c: Removed. There is now an assembler version.
* sysdeps/i386/i586/memcopy.h (WORD_COPY_BWD): Parameters did
not correspond to used values.
* sysdeps/unix/sysv/linux/nfs/nfs.h: New file. Simply a wrapper
around a kernel header file.
* sysdeps/unix/sysv/linux/Dist: Add it.
* sysdeps/unix/sysv/linux/Makefile [$(subdir)=sunrpc] (headers):
Likewise.
* sysdeps/unix/sysv/linux/local_lim.h: Rewrite. Instead of
defining ourself we use a kernel header file.
* sysdeps/unix/sysv/linux/i386/sysdep.h (DO_CALL): Optimize system
call handler for i586.
* sysdeps/unix/sysv/linux/sys/param.h: Add copyright and clean up.
Sat Oct 14 02:52:36 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* malloc/malloc.c (_malloc_internal): Performance fix. Move
if statement out of loop.
* stdio/_itoa.c, stdio/_itoa.h: Complete rewrite. Much faster
implementation using GMP functions. Contributed by
Torbjorn Granlund and Ulrich Drepper.
* stdio/test_rdwr.c: Include <errno.h>.
* sysdeps/i386/i586/Implies: New file.
New highly optimized string functions for i[345]86.
* sysdeps/i386/memchr.S, sysdeps/i386/memcmp.S: New files.
* sysdeps/i386/stpcpy.S, sysdeps/i386/stpncpy.S: New files.
* sysdeps/i386/strchr.S, sysdeps/i386/strcspn.S: New files.
* sysdeps/i386/strpbrk.S, sysdeps/i386/strrchr.S: New files.
* sysdeps/i386/strspn.S, sysdeps/i386/i486/strcat.S: New files.
* sysdeps/i386/i486/strlen.S, sysdeps/i386/i586/strchr.S: New files.
* sysdeps/i386/i586/strlen.S: New file.
* sysdeps/i386/memchr.c: Removed. There is now an assembler version.
* sysdeps/i386/i586/memcopy.h (WORD_COPY_BWD): Parameters did
not correspond to used values.
* sysdeps/unix/sysv/linux/nfs/nfs.h: New file. Simply a wrapper
around a kernel header file.
* sysdeps/unix/sysv/linux/Dist: Add it.
* sysdeps/unix/sysv/linux/Makefile [$(subdir)=sunrpc] (headers):
Likewise.
* sysdeps/unix/sysv/linux/local_lim.h: Rewrite. Instead of
defining ourself we use a kernel header file.
* sysdeps/unix/sysv/linux/i386/sysdep.h (DO_CALL): Optimize system
call handler for i586.
* sysdeps/unix/sysv/linux/sys/param.h: Add copyright and clean up.
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
sys/socketcall.h
|
||||
sys/timex.h
|
||||
nfs/nfs.h
|
||||
|
||||
@@ -20,7 +20,11 @@ sysdep_routines := $(sysdep_routines) ipc
|
||||
endif
|
||||
|
||||
ifeq ($(subdir), socket)
|
||||
headers += sys/socketcall.h
|
||||
headers += sys/socketcall.h
|
||||
endif
|
||||
|
||||
ifeq ($(subdir), sunrpc)
|
||||
headers += nfs/nfs.h
|
||||
endif
|
||||
|
||||
config-LDFLAGS = -Wl,-dynamic-linker=/lib/ld-gnu.so.1
|
||||
|
||||
@@ -93,43 +93,61 @@ Cambridge, MA 02139, USA. */
|
||||
(2 * movl is less expensive than pushl + popl).
|
||||
|
||||
Second unlike for the other registers we don't save the content of
|
||||
%ecx and %edx when we have than 1 and 2 registers resp. */
|
||||
%ecx and %edx when we have than 1 and 2 registers resp.
|
||||
|
||||
The code below might look a bit long but we have to take care for
|
||||
the pipelined processors (i586 and up). Here the `pushl' and `popl'
|
||||
instructions are marked as NP (not pairable) but the exception is
|
||||
two consecutive of these instruction. This gives no penalty on
|
||||
i386 and i486 processors though. */
|
||||
|
||||
#undef DO_CALL
|
||||
#define DO_CALL(args) \
|
||||
PUSHARGS_##args \
|
||||
DOARGS_##args \
|
||||
int $0x80; \
|
||||
UNDOARGS_##args
|
||||
int $0x80 \
|
||||
POPARGS_##args
|
||||
|
||||
#define PUSHARGS_0 /* No arguments to push. */
|
||||
#define DOARGS_0 /* No arguments to frob. */
|
||||
#define UNDOARGS_0 /* No arguments to unfrob. */
|
||||
#define _DOARGS_0(n) /* No arguments to frob. */
|
||||
#define _UNDOARGS_0 /* No arguments to unfrob. */
|
||||
#define POPARGS_0 /* No arguments to pop. */
|
||||
#define _PUSHARGS_0 /* No arguments to push. */
|
||||
#define _DOARGS_0(n) /* No arguments to frob. */
|
||||
#define _POPARGS_0 /* No arguments to pop. */
|
||||
|
||||
#define DOARGS_1 movl %ebx, %edx; movl 4(%esp), %ebx; DOARGS_0
|
||||
#define UNDOARGS_1 UNDOARGS_0; movl %edx, %ebx
|
||||
#define _DOARGS_1(n) pushl %ebx; movl n+4(%esp), %ebx; _DOARGS_0 (n)
|
||||
#define _UNDOARGS_1 _UNDOARGS_0; popl %ebx
|
||||
#define PUSHARGS_1 movl %ebx, %edx; PUSHARGS_0
|
||||
#define DOARGS_1 _DOARGS_1 (4)
|
||||
#define POPARGS_1 POPARGS_0; movl %edx, %ebx
|
||||
#define _PUSHARGS_1 pushl %ebx; _PUSHARGS_0
|
||||
#define _DOARGS_1(n) movl n(%esp), %ebx; _DOARGS_0(n-4)
|
||||
#define _POPARGS_1 _POPARGS_0; popl %ebx
|
||||
|
||||
#define DOARGS_2 movl 8(%esp), %ecx; DOARGS_1
|
||||
#define UNDOARGS_2 UNDOARGS_1
|
||||
#define PUSHARGS_2 PUSHARGS_1
|
||||
#define DOARGS_2 _DOARGS_2 (8)
|
||||
#define POPARGS_2 POPARGS_1
|
||||
#define _PUSHARGS_2 _PUSHARGS_1
|
||||
#define _DOARGS_2(n) movl n(%esp), %ecx; _DOARGS_1 (n-4)
|
||||
#define _UNDOARGS_2 _UNDOARGS_1
|
||||
#define _POPARGS_2 _POPARGS_1
|
||||
|
||||
#define DOARGS_3 _DOARGS_3 (12)
|
||||
#define UNDOARGS_3 _UNDOARGS_3
|
||||
#define PUSHARGS_3 _PUSHARGS_2
|
||||
#define DOARGS_3 _DOARGS_3 (16)
|
||||
#define POPARGS_3 _POPARGS_3
|
||||
#define _PUSHARGS_3 _PUSHARGS_2
|
||||
#define _DOARGS_3(n) movl n(%esp), %edx; _DOARGS_2 (n-4)
|
||||
#define _UNDOARGS_3 _UNDOARGS_2
|
||||
#define _POPARGS_3 _POPARGS_2
|
||||
|
||||
#define DOARGS_4 _DOARGS_4 (16)
|
||||
#define UNDOARGS_4 _UNDOARGS_4
|
||||
#define _DOARGS_4(n) pushl %esi; movl n+4(%esp), %esi; _DOARGS_3 (n)
|
||||
#define _UNDOARGS_4 _UNDOARGS_3; popl %esi
|
||||
|
||||
#define DOARGS_5 _DOARGS_5 (20)
|
||||
#define UNDOARGS_5 _UNDOARGS_5
|
||||
#define _DOARGS_5(n) pushl %edi; movl n+4(%esp), %edi; _DOARGS_4 (n)
|
||||
#define _UNDOARGS_5 _UNDOARGS_4; popl %edi
|
||||
#define PUSHARGS_4 _PUSHARGS_4
|
||||
#define DOARGS_4 _DOARGS_4 (24)
|
||||
#define POPARGS_4 _POPARGS_4
|
||||
#define _PUSHARGS_4 pushl %esi; _PUSHARGS_3
|
||||
#define _DOARGS_4(n) movl n(%esp), %esi; _DOARGS_3 (n-4)
|
||||
#define _POPARGS_4 _POPARGS_3; popl %esi
|
||||
|
||||
#define PUSHARGS_5 _PUSHARGS_5
|
||||
#define DOARGS_5 _DOARGS_5 (32)
|
||||
#define POPARGS_5 _POPARGS_5
|
||||
#define _PUSHARGS_5 pushl %edi; _PUSHARGS_4
|
||||
#define _DOARGS_5(n) movl n(%esp), %edi; _DOARGS_4 (n-4)
|
||||
#define _POPARGS_5 _POPARGS_4; popl %edi
|
||||
|
||||
#endif /* ASSEMBLER */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Minimum guaranteed maximum values for system limits. Hurd version.
|
||||
/* Minimum guaranteed maximum values for system limits. Linux version.
|
||||
|
||||
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993, 1994, 1995 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
|
||||
@@ -18,14 +18,5 @@ License along with the GNU C Library; see the file COPYING.LIB. If
|
||||
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
/* Linux has a fixed limit of supplementary groups allocated with a
|
||||
process. This value is determined by the size of the `groups'
|
||||
member of the `task_struct' structure in <linux/sched.h>. */
|
||||
|
||||
#define NGROUPS_MAX 32
|
||||
|
||||
|
||||
/* Maximum size of file names. Not all file system types support
|
||||
this size but it is only a maximum value. */
|
||||
|
||||
#define NAME_MAX 255
|
||||
/* The kernel sources contain a file with all the needed information. */
|
||||
#include <linux/limits.h>
|
||||
|
||||
1
sysdeps/unix/sysv/linux/nfs/nfs.h
Normal file
1
sysdeps/unix/sysv/linux/nfs/nfs.h
Normal file
@@ -0,0 +1 @@
|
||||
#include <linux/nfs.h>
|
||||
@@ -1,3 +1,21 @@
|
||||
/* Copyright (C) 1995 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_PARAM_H
|
||||
#define _SYS_PARAM_H
|
||||
|
||||
@@ -7,26 +25,21 @@
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
/* Don't change it. H.J. */
|
||||
#ifdef OLD_LINUX
|
||||
#undef MAXHOSTNAMELEN
|
||||
#define MAXHOSTNAMELEN 8 /* max length of hostname */
|
||||
#endif
|
||||
|
||||
#ifndef howmany
|
||||
#define howmany(x, y) (((x)+((y)-1))/(y))
|
||||
# define howmany(x, y) (((x)+((y)-1))/(y))
|
||||
#endif
|
||||
|
||||
#ifndef roundup
|
||||
#define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
|
||||
# define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
|
||||
#endif
|
||||
|
||||
#define MAXPATHLEN PATH_MAX
|
||||
#define NOFILE OPEN_MAX
|
||||
|
||||
/* Following the information of some of the kernel people I here assume
|
||||
* that block size (i.e. the value of stat.st_blocks) for all filesystem
|
||||
* is 512 bytes. If not tell me or HJ. -- Uli */
|
||||
that block size (i.e. the value of stat.st_blocks) for all filesystem
|
||||
is 512 bytes. If not tell HJ, Roland, or me. -- drepper */
|
||||
#define DEV_BSIZE 512
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user