diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-01-09 04:19:03 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-01-09 04:19:03 +0000 |
commit | 6aca81bb9ddd83458ef9358bc24a31f29a7b374f (patch) | |
tree | 8a1f25f2451f89a9bfc8872c0b197d06225756e6 /sysdeps/unix/sysv/linux/i386 | |
parent | f5bf21a78027b62197ee88a4813b32b12452316a (diff) | |
download | glibc-6aca81bb9ddd83458ef9358bc24a31f29a7b374f.zip glibc-6aca81bb9ddd83458ef9358bc24a31f29a7b374f.tar.gz glibc-6aca81bb9ddd83458ef9358bc24a31f29a7b374f.tar.bz2 |
Update.
2003-01-08 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/arm/sysdep.h (INTERNAL_SYSCALL,
INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): Add err
argument.
(INTERNAL_SYSCALL_DECL): Define.
2003-01-06 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/ia64/sysdep.h (INTERNAL_SYSCALL,
INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): Add err
argument.
(INTERNAL_SYSCALL_DECL): Define.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
(INLINE_SYSCALL): Adjust.
* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
* elf/dl-misc.c (_dl_debug_vdprintf): Add INTERNAL_SYSCALL_DECL,
add err argument to INTERNAL_SYSCALL* macros.
* sysdeps/unix/sysv/linux/i386/brk.c (__brk): Likewise.
* sysdeps/unix/sysv/linux/i386/system.c (cancel_handler): Likewise.
* sysdeps/unix/sysv/linux/m68k/brk.c (__brk): Likewise.
* sysdeps/unix/sysv/linux/m68k/getpagesize.c (__getpagesize):
Likewise.
* sysdeps/unix/sysv/linux/sigwait.c (do_sigwait): Likewise.
* sysdeps/unix/sysv/linux/i386/sigaction.c (__libc_sigaction): Use
INLINE_SYSCALL instead of INTERNAL_SYSCALL and setting errno.
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386')
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/brk.c | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/sigaction.c | 11 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/sysdep.h | 22 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/system.c | 5 |
4 files changed, 24 insertions, 20 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/brk.c b/sysdeps/unix/sysv/linux/i386/brk.c index c71a1fb..1d26439 100644 --- a/sysdeps/unix/sysv/linux/i386/brk.c +++ b/sysdeps/unix/sysv/linux/i386/brk.c @@ -1,5 +1,5 @@ /* brk system call for Linux/i386. - Copyright (C) 1995, 1996, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 2000, 2002, 2003 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 @@ -36,7 +36,9 @@ __brk (void *addr) { void *__unbounded newbrk; - newbrk = (void *__unbounded) INTERNAL_SYSCALL (brk, 1, __ptrvalue (addr)); + INTERNAL_SYSCALL_DECL (err); + newbrk = (void *__unbounded) INTERNAL_SYSCALL (brk, err, 1, + __ptrvalue (addr)); __curbrk = newbrk; diff --git a/sysdeps/unix/sysv/linux/i386/sigaction.c b/sysdeps/unix/sysv/linux/i386/sigaction.c index 18a5f1e..c2f0a0f 100644 --- a/sysdeps/unix/sysv/linux/i386/sigaction.c +++ b/sysdeps/unix/sysv/linux/i386/sigaction.c @@ -131,15 +131,12 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact) k_newact.sa_restorer = &restore; } - result = INTERNAL_SYSCALL (sigaction, 3, sig, - act ? __ptrvalue (&k_newact) : 0, - oact ? __ptrvalue (&k_oldact) : 0); + result = INLINE_SYSCALL (sigaction, 3, sig, + act ? __ptrvalue (&k_newact) : 0, + oact ? __ptrvalue (&k_oldact) : 0); if (result < 0) - { - __set_errno (-result); - return -1; - } + return -1; if (oact) { diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h index 25208a0..02a78d3 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992,93,95,96,97,98,99,2000,02 Free Software Foundation, Inc. +/* Copyright (C) 1992,1993,1995-2000,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, <drepper@gnu.org>, August 1995. @@ -313,10 +313,10 @@ asm (".L__X'%ebx = 1\n\t" #undef INLINE_SYSCALL #define INLINE_SYSCALL(name, nr, args...) \ ({ \ - unsigned int resultvar = INTERNAL_SYSCALL (name, nr, args); \ - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (resultvar), 0)) \ + unsigned int resultvar = INTERNAL_SYSCALL (name, , nr, args); \ + if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (resultvar, ), 0)) \ { \ - __set_errno (INTERNAL_SYSCALL_ERRNO (resultvar)); \ + __set_errno (INTERNAL_SYSCALL_ERRNO (resultvar, )); \ resultvar = 0xffffffff; \ } \ (int) resultvar; }) @@ -328,7 +328,7 @@ asm (".L__X'%ebx = 1\n\t" #undef INTERNAL_SYSCALL #ifdef I386_USE_SYSENTER # ifdef SHARED -# define INTERNAL_SYSCALL(name, nr, args...) \ +# define INTERNAL_SYSCALL(name, err, nr, args...) \ ({ \ unsigned int resultvar; \ asm volatile ( \ @@ -341,7 +341,7 @@ asm (".L__X'%ebx = 1\n\t" ASMFMT_##nr(args) : "memory", "cc"); \ (int) resultvar; }) # else -# define INTERNAL_SYSCALL(name, nr, args...) \ +# define INTERNAL_SYSCALL(name, err, nr, args...) \ ({ \ unsigned int resultvar; \ asm volatile ( \ @@ -354,7 +354,7 @@ asm (".L__X'%ebx = 1\n\t" (int) resultvar; }) # endif #else -# define INTERNAL_SYSCALL(name, nr, args...) \ +# define INTERNAL_SYSCALL(name, err, nr, args...) \ ({ \ unsigned int resultvar; \ asm volatile ( \ @@ -367,11 +367,15 @@ asm (".L__X'%ebx = 1\n\t" (int) resultvar; }) #endif +#undef INTERNAL_SYSCALL_DECL +#define INTERNAL_SYSCALL_DECL(err) do { } while (0) + #undef INTERNAL_SYSCALL_ERROR_P -#define INTERNAL_SYSCALL_ERROR_P(val) ((unsigned int) (val) >= 0xfffff001u) +#define INTERNAL_SYSCALL_ERROR_P(val, err) \ + ((unsigned int) (val) >= 0xfffff001u) #undef INTERNAL_SYSCALL_ERRNO -#define INTERNAL_SYSCALL_ERRNO(val) (-(val)) +#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) #define LOADARGS_0 #if defined I386_USE_SYSENTER && defined SHARED diff --git a/sysdeps/unix/sysv/linux/i386/system.c b/sysdeps/unix/sysv/linux/i386/system.c index 69eb2cd..a171541 100644 --- a/sysdeps/unix/sysv/linux/i386/system.c +++ b/sysdeps/unix/sysv/linux/i386/system.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003 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 @@ -56,7 +56,8 @@ cancel_handler (void *arg) { pid_t child = *(pid_t *) arg; - INTERNAL_SYSCALL (kill, 2, child, SIGKILL); + INTERNAL_SYSCALL_DECL (err); + INTERNAL_SYSCALL (kill, err, 2, child, SIGKILL); TEMP_FAILURE_RETRY (__waitpid (child, NULL, 0)); |