1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00
* sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
	* sysdeps/unix/sysv/linux/Makefile [subdir=signal] (sysdep_routines):
	Move definition to...
	* sysdeps/unix/sysv/linux/alpha/Makefile: ...here...
	* sysdeps/unix/sysv/linux/arm/syscalls.list: ...and here...
	* sysdeps/unix/sysv/linux/m68k/syscalls.list: ...and here...
	* sysdeps/unix/sysv/linux/mips/syscalls.list: ...and here...
	* sysdeps/unix/sysv/linux/powerpc/syscalls.list: ...and here...
	* sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: ...and here...
	* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: ...and here.
This commit is contained in:
Ulrich Drepper
1998-10-21 15:40:39 +00:00
parent 0dee67386c
commit adcb550ca6
11 changed files with 141 additions and 7 deletions

View File

@ -38,6 +38,7 @@
* sysdeps/unix/sysv/linux/xstat64.c: Likewise. * sysdeps/unix/sysv/linux/xstat64.c: Likewise.
* sysdeps/unix/sysv/linux/i386/chown.c: Likewise. * sysdeps/unix/sysv/linux/i386/chown.c: Likewise.
* sysdeps/unix/sysv/linux/i386/getgroups.c: Likewise. * sysdeps/unix/sysv/linux/i386/getgroups.c: Likewise.
* sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
* sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise. * sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise.
* sysdeps/unix/sysv/linux/i386/setfsuid.c: Likewise. * sysdeps/unix/sysv/linux/i386/setfsuid.c: Likewise.
* sysdeps/unix/sysv/linux/i386/setgid.c: Likewise. * sysdeps/unix/sysv/linux/i386/setgid.c: Likewise.
@ -61,6 +62,16 @@
* sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: ...and here... * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: ...and here...
* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: ...and here. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: ...and here.
* sysdeps/unix/sysv/linux/Makefile [subdir=signal] (sysdep_routines):
Move definition to...
* sysdeps/unix/sysv/linux/alpha/Makefile: ...here...
* sysdeps/unix/sysv/linux/arm/syscalls.list: ...and here...
* sysdeps/unix/sysv/linux/m68k/syscalls.list: ...and here...
* sysdeps/unix/sysv/linux/mips/syscalls.list: ...and here...
* sysdeps/unix/sysv/linux/powerpc/syscalls.list: ...and here...
* sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: ...and here...
* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: ...and here.
* sysdeps/unix/sysv/linux/i386/Makefile [subdir=misc] * sysdeps/unix/sysv/linux/i386/Makefile [subdir=misc]
(sysdep_routines): Remove s_pread64 and s_pwrite64. (sysdep_routines): Remove s_pread64 and s_pwrite64.

View File

@ -89,11 +89,6 @@ endif
# Don't compile the ctype glue code, since there is no old non-GNU C library. # Don't compile the ctype glue code, since there is no old non-GNU C library.
inhibit-glue = yes inhibit-glue = yes
ifeq ($(subdir),signal)
sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
rt_sigqueueinfo rt_sigaction rt_sigpending
endif
ifeq ($(subdir),dirent) ifeq ($(subdir),dirent)
sysdep_routines += getdents64 sysdep_routines += getdents64
endif endif

View File

@ -15,3 +15,8 @@ sysdep_routines += osf_select osf_gettimeofday osf_settimeofday \
CFLAGS-ioperm.c = -Wa,-mev6 CFLAGS-ioperm.c = -Wa,-mev6
endif endif
ifeq ($(subdir),signal)
sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
rt_sigqueueinfo rt_sigaction rt_sigpending
endif

View File

@ -1,3 +1,8 @@
ifeq ($(subdir),misc) ifeq ($(subdir),misc)
sysdep_routines += setfsgid setfsuid setresgid setresuid sysdep_routines += setfsgid setfsuid setresgid setresuid
endif endif
ifeq ($(subdir),signal)
sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
rt_sigqueueinfo rt_sigaction rt_sigpending
endif

View File

@ -22,6 +22,9 @@
#include <stddef.h> #include <stddef.h>
#include <signal.h> #include <signal.h>
#include <sysdep.h>
#include <sys/syscall.h>
/* The difference here is that the sigaction structure used in the /* The difference here is that the sigaction structure used in the
kernel is not the same as we use in the libc. Therefore we must kernel is not the same as we use in the libc. Therefore we must
translate it here. */ translate it here. */
@ -62,8 +65,8 @@ __sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
/* XXX The size argument hopefully will have to be changed to the /* XXX The size argument hopefully will have to be changed to the
real size of the user-level sigset_t. */ real size of the user-level sigset_t. */
result = __syscall_rt_sigaction (sig, act ? &kact : NULL, result = INLINE_SYSCALL (rt_sigaction, 4, sig, act ? &kact : NULL,
oact ? &koact : NULL, _NSIG / 8); oact ? &koact : NULL, _NSIG / 8);
if (result >= 0 || errno != ENOSYS) if (result >= 0 || errno != ENOSYS)
{ {

View File

@ -198,6 +198,101 @@
#define _DOARGS_5(n) movl n(%esp), %edi; _DOARGS_4 (n-4) #define _DOARGS_5(n) movl n(%esp), %edi; _DOARGS_4 (n-4)
#define _POPARGS_5 _POPARGS_4; popl %edi #define _POPARGS_5 _POPARGS_4; popl %edi
#else /* !__ASSEMBLER__ */
/* Define a macro which expands inline into the wrapper code for a system
call. */
#undef INLINE_SYSCALL
#define INLINE_SYSCALL(name, nr, args...) \
({ \
unsigned int resultvar; \
EXTRAVARS_##nr(args) \
asm volatile ( \
PUSHARGS_##nr \
DOARGS_##nr \
"int $0x80\n\t" \
POPARGS_##nr \
: "=a" (resultvar) \
ASMFMT_##nr(args) \
"i" (__NR_##name) : "memory", "cc"); \
if (resultvar >= 0xfffff001) \
{ \
__set_errno (-resultvar); \
resultvar = 0xffffffff; \
} \
(int) resultvar; })
#define PUSHARGS_0 /* Nothing */
#define DOARGS_0 "movl %1, %%eax\n\t"
#define POPARGS_0 /* Nothing */
#define _PUSHARGS_0 /* Nothing */
#define _DOARGS_0 /* Nothing */
#define _POPARGS_0 /* Nothing */
#define ASMFMT_0() :
#define EXTRAVARS_0() /* Nothing */
#define PUSHARGS_1 "xchgl %%ebx, %%edx\n\t" _PUSHARGS_0
#define DOARGS_1 _DOARGS_0 "movl %3, %%eax\n\t"
#define POPARGS_1 _POPARGS_0 "xchgl %%edx, %%ebx"
#define _PUSHARGS_1 _PUSHARGS_0 "pushl %%ebx\n\t"
#define _DOARGS_1 "movl %3, %%ebx\n\t" _DOARGS_0
#define _POPARGS_1 "popl %%ebx\n\t" _POPARGS_0
#define ASMFMT_1(arg1) \
, "=d" (use_edx) : "1" (arg1),
#define EXTRAVARS_1(arg1) \
unsigned long int use_edx;
#define PUSHARGS_2 PUSHARGS_1
#define DOARGS_2 _DOARGS_0 "movl %5, %%eax\n\t"
#define POPARGS_2 POPARGS_1
#define _PUSHARGS_2 _PUSHARGS_1
#define _DOARGS_2 _DOARGS_1
#define _POPARGS_2 _POPARGS_1
#define ASMFMT_2(arg1, arg2) \
, "=&d" (use_edx), "=c" (use_ecx) : "1" (arg1), "2" (use_ecx),
#define EXTRAVARS_2(arg1, arg2) \
unsigned long int use_ecx = (unsigned long int) (arg2), use_edx;
#define PUSHARGS_3 _PUSHARGS_3
#define DOARGS_3 _DOARGS_3 "movl %6, %%eax\n\t"
#define POPARGS_3 _POPARGS_3
#define _PUSHARGS_3 _PUSHARGS_2
#define _DOARGS_3 _DOARGS_2
#define _POPARGS_3 _POPARGS_2
#define ASMFMT_3(arg1, arg2, arg3) \
, "=d" (use_edx), "=c" (use_ecx) \
: "0" (arg1), "2" (use_ecx), "1" (use_edx),
#define EXTRAVARS_3(arg1, arg2, arg3) \
unsigned long int use_ecx = (unsigned long int) (arg2); \
unsigned long int use_edx = (unsigned long int) (arg3);
#define PUSHARGS_4 _PUSHARGS_4
#define DOARGS_4 _DOARGS_4 "movl %7, %%eax\n\t"
#define POPARGS_4 _POPARGS_4
#define _PUSHARGS_4 _PUSHARGS_3
#define _DOARGS_4 _DOARGS_3
#define _POPARGS_4 _POPARGS_3
#define ASMFMT_4(arg1, arg2, arg3, arg4) \
, "=d" (use_edx), "=c" (use_ecx) \
: "0" (arg1), "2" (use_ecx), "1" (use_edx), "S" (arg4),
#define EXTRAVARS_4(arg1, arg2, arg3, arg4) \
unsigned long int use_ecx = (unsigned long int) (arg2); \
unsigned long int use_edx = (unsigned long int) (arg3);
#define PUSHARGS_5 _PUSHARGS_5
#define DOARGS_5 _DOARGS_5 "movl %8, %%eax\n\t"
#define POPARGS_5 _POPARGS_5
#define _PUSHARGS_5 PUSHARGS_4
#define _DOARGS_5 _DOARGS_4
#define _POPARGS_5 _POPARGS_4
#define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
, "=d" (use_edx), "=c" (use_ecx) \
: "0" (arg1), "2" (use_ecx), "1" (use_edx), "S" (arg4), "D" (arg5),
#define EXTRAVARS_5(arg1, arg2, arg3, arg4, arg5) \
unsigned long int use_ecx = (unsigned long int) (arg2); \
unsigned long int use_edx = (unsigned long int) (arg3);
#endif /* __ASSEMBLER__ */ #endif /* __ASSEMBLER__ */
#endif /* linux/i386/sysdep.h */ #endif /* linux/i386/sysdep.h */

View File

@ -11,3 +11,8 @@ ifeq ($(subdir),elf)
sysdep-others += lddlibc4 sysdep-others += lddlibc4
install-bin += lddlibc4 install-bin += lddlibc4
endif endif
ifeq ($(subdir),signal)
sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
rt_sigqueueinfo rt_sigaction rt_sigpending
endif

View File

@ -1,4 +1,6 @@
ifeq ($(subdir),signal) ifeq ($(subdir),signal)
sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
rt_sigqueueinfo rt_sigaction rt_sigpending
#sysdep_routines += sigsuspend #sysdep_routines += sigsuspend
endif endif

View File

@ -0,0 +1,4 @@
ifeq ($(subdir),signal)
sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
rt_sigqueueinfo rt_sigaction rt_sigpending
endif

View File

@ -10,3 +10,8 @@ ifeq ($(subdir),elf)
CFLAGS-rtld.c += -mv8 CFLAGS-rtld.c += -mv8
#rtld-routines += dl-sysdepsparc #rtld-routines += dl-sysdepsparc
endif # elf endif # elf
ifeq ($(subdir),signal)
sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
rt_sigqueueinfo rt_sigaction rt_sigpending
endif

View File

@ -0,0 +1,4 @@
ifeq ($(subdir),signal)
sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
rt_sigqueueinfo rt_sigaction rt_sigpending
endif