mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-24 11:41:07 +00:00
Document new files for Linux i386/ELF port.
Fri Sep 8 16:32:12 1995 Ulrich Drepper <drepper@gnu.ai.mit.edu> * sysdeps/unix/sysv/linux/Implies, sysdeps/unix/sysv/linux/Makefile, sysdeps/unix/sysv/linux/Subdirs, sysdeps/unix/sysv/linux/accept.S, sysdeps/unix/sysv/linux/adjtime.c, sysdeps/unix/sysv/linux/adjtimex.S, sysdeps/unix/sysv/linux/bind.S, sysdeps/unix/sysv/linux/connect.S, sysdeps/unix/sysv/linux/direct.h, sysdeps/unix/sysv/linux/dl-machine.h, sysdeps/unix/sysv/linux/errnos.h, sysdeps/unix/sysv/linux/fork.S, sysdeps/unix/sysv/linux/gethostid.c, sysdeps/unix/sysv/linux/gethostname.C, sysdeps/unix/sysv/linux/getpeername.S, sysdeps/unix/sysv/linux/getpgid.S, sysdeps/unix/sysv/linux/getpgrp.S, sysdeps/unix/sysv/linux/getsockname.S, sysdeps/unix/sysv/linux/getsockopt.S, sysdeps/unix/sysv/linux/gtty.S, sysdeps/unix/sysv/linux/listen.S, sysdeps/unix/sysv/linux/local_lim.h, sysdeps/unix/sysv/linux/madvise.c, sysdeps/unix/sysv/linux/msgctl.c, sysdeps/unix/sysv/linux/msgget.c, sysdeps/unix/sysv/linux/msgrcv.c, sysdeps/unix/sysv/linux/msgsnd.c, sysdeps/unix/sysv/linux/pipe.S, sysdeps/unix/sysv/linux/poll.c, sysdeps/unix/sysv/linux/readv.c, sysdeps/unix/sysv/linux/recv.S, sysdeps/unix/sysv/linux/recvfrom.S, sysdeps/unix/sysv/linux/recvmsg.S, sysdeps/unix/sysv/linux/semctl.c, sysdeps/unix/sysv/linux/semget.c, sysdeps/unix/sysv/linux/semop.c, sysdeps/unix/sysv/linux/send.S, sysdeps/unix/sysv/linux/sendmsg.S, sysdeps/unix/sysv/linux/sendto.S, sysdeps/unix/sysv/linux/setegid.c, sysdeps/unix/sysv/linux/seteuid.c, sysdeps/unix/sysv/linux/sethostid.c, sysdeps/unix/sysv/linux/setpgid.c, sysdeps/unix/sysv/linux/setpgrp.c, sysdeps/unix/sysv/linux/setsid.S, sysdeps/unix/sysv/linux/setsockopt.S, sysdeps/unix/sysv/linux/settimeofday.S, sysdeps/unix/sysv/linux/shmat.c, sysdeps/unix/sysv/linux/shmctl.c, sysdeps/unix/sysv/linux/shmdt.c, sysdeps/unix/sysv/linux/shmget.c, sysdeps/unix/sysv/linux/shutdown.S, sysdeps/unix/sysv/linux/sigaction.S, sysdeps/unix/sysv/linux/signal.S, sysdeps/unix/sysv/linux/sigpending.S, sysdeps/unix/sysv/linux/sigset.h, sysdeps/unix/sysv/linux/sockaddrcom.h, sysdeps/unix/sysv/linux/socketpair.S, sysdeps/unix/sysv/linux/speed.c, sysdeps/unix/sysv/linux/statbuf.h, sysdeps/unix/sysv/linux/stty.S, sysdeps/unix/sysv/linux/syscall.h, sysdeps/unix/sysv/linux/sysconf.c, sysdeps/unix/sysv/linux/tcdrain.c, sysdeps/unix/sysv/linux/tcflow.c, sysdeps/unix/sysv/linux/tcflush.c, sysdeps/unix/sysv/linux/tcgetattr.c, sysdeps/unix/sysv/linux/tcsetattr.c, sysdeps/unix/sysv/linux/termbits.h, sysdeps/unix/sysv/linux/ualarm.c, sysdeps/unix/sysv/linux/ulimit.c, sysdeps/unix/sysv/linux/usleep.c, sysdeps/unix/sysv/linux/utsnamelen.h, sysdeps/unix/sysv/linux/vfork.c, sysdeps/unix/sysv/linux/wait.c, sysdeps/unix/sysv/linux/wait4.S, sysdeps/unix/sysv/linux/waitpid.c, sysdeps/unix/sysv/linux/writev.c: New Linux/ELF specific, architecture independent files. sysdeps/unix/sysv/linux/i386/Dist, sysdeps/unix/sysv/linux/i386/Makefile, sysdeps/unix/sysv/linux/i386/brk.S, sysdeps/unix/sysv/linux/i386/fcntlbits.h, sysdeps/unix/sysv/linux/i386/fpu_control.c, sysdeps/unix/sysv/linux/i386/fpu_control.h, sysdeps/unix/sysv/linux/i386/fstat.S, sysdeps/unix/sysv/linux/i386/fxstat.S, sysdeps/unix/sysv/linux/i386/ieee_fpu.c, sysdeps/unix/sysv/linux/i386/init-first.S, sysdeps/unix/sysv/linux/i386/ipc.S, sysdeps/unix/sysv/linux/i386/lstat.S, sysdeps/unix/sysv/linux/i386/lxstat.S, sysdeps/unix/sysv/linux/i386/mknod.S, sysdeps/unix/sysv/linux/i386/mmap.S, sysdeps/unix/sysv/linux/i386/sbrk.S, sysdeps/unix/sysv/linux/i386/setfpucw.c, sysdeps/unix/sysv/linux/i386/signum.h, sysdeps/unix/sysv/linux/i386/socket.S, sysdeps/unix/sysv/linux/i386/stat.S, sysdeps/unix/sysv/linux/i386/syscall.S, sysdeps/unix/sysv/linux/i386/sysdep.S, sysdeps/unix/sysv/linux/i386/sysdep.h, sysdeps/unix/sysv/linux/i386/xmknod.S, sysdeps/unix/sysv/linux/i386/xstat.S: New Linux i386/ELF specific files. sysdeps/unix/sysv/linux/sys/ipc_buf.h, sysdeps/unix/sysv/linux/sys/mman.h, sysdeps/unix/sysv/linux/sys/msq_buf.h, sysdeps/unix/sysv/linux/sys/sem_buf.h, sysdeps/unix/sysv/linux/sys/shm_buf.h, sysdeps/unix/sysv/linux/sys/socketcall.h, sysdeps/unix/sysv/linux/sys/timex.h: New Linux/ELF specific, architecture independent header files.
This commit is contained in:
parent
d586354e51
commit
d2f5be2a12
83
ChangeLog
83
ChangeLog
@ -1,3 +1,86 @@
|
|||||||
|
Fri Sep 8 16:32:12 1995 Ulrich Drepper <drepper@gnu.ai.mit.edu>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/Implies,
|
||||||
|
sysdeps/unix/sysv/linux/Makefile, sysdeps/unix/sysv/linux/Subdirs,
|
||||||
|
sysdeps/unix/sysv/linux/accept.S, sysdeps/unix/sysv/linux/adjtime.c,
|
||||||
|
sysdeps/unix/sysv/linux/adjtimex.S, sysdeps/unix/sysv/linux/bind.S,
|
||||||
|
sysdeps/unix/sysv/linux/connect.S, sysdeps/unix/sysv/linux/direct.h,
|
||||||
|
sysdeps/unix/sysv/linux/dl-machine.h, sysdeps/unix/sysv/linux/errnos.h,
|
||||||
|
sysdeps/unix/sysv/linux/fork.S, sysdeps/unix/sysv/linux/gethostid.c,
|
||||||
|
sysdeps/unix/sysv/linux/gethostname.C,
|
||||||
|
sysdeps/unix/sysv/linux/getpeername.S,
|
||||||
|
sysdeps/unix/sysv/linux/getpgid.S, sysdeps/unix/sysv/linux/getpgrp.S,
|
||||||
|
sysdeps/unix/sysv/linux/getsockname.S,
|
||||||
|
sysdeps/unix/sysv/linux/getsockopt.S, sysdeps/unix/sysv/linux/gtty.S,
|
||||||
|
sysdeps/unix/sysv/linux/listen.S, sysdeps/unix/sysv/linux/local_lim.h,
|
||||||
|
sysdeps/unix/sysv/linux/madvise.c, sysdeps/unix/sysv/linux/msgctl.c,
|
||||||
|
sysdeps/unix/sysv/linux/msgget.c, sysdeps/unix/sysv/linux/msgrcv.c,
|
||||||
|
sysdeps/unix/sysv/linux/msgsnd.c, sysdeps/unix/sysv/linux/pipe.S,
|
||||||
|
sysdeps/unix/sysv/linux/poll.c, sysdeps/unix/sysv/linux/readv.c,
|
||||||
|
sysdeps/unix/sysv/linux/recv.S, sysdeps/unix/sysv/linux/recvfrom.S,
|
||||||
|
sysdeps/unix/sysv/linux/recvmsg.S, sysdeps/unix/sysv/linux/semctl.c,
|
||||||
|
sysdeps/unix/sysv/linux/semget.c, sysdeps/unix/sysv/linux/semop.c,
|
||||||
|
sysdeps/unix/sysv/linux/send.S, sysdeps/unix/sysv/linux/sendmsg.S,
|
||||||
|
sysdeps/unix/sysv/linux/sendto.S, sysdeps/unix/sysv/linux/setegid.c,
|
||||||
|
sysdeps/unix/sysv/linux/seteuid.c, sysdeps/unix/sysv/linux/sethostid.c,
|
||||||
|
sysdeps/unix/sysv/linux/setpgid.c, sysdeps/unix/sysv/linux/setpgrp.c,
|
||||||
|
sysdeps/unix/sysv/linux/setsid.S, sysdeps/unix/sysv/linux/setsockopt.S,
|
||||||
|
sysdeps/unix/sysv/linux/settimeofday.S,
|
||||||
|
sysdeps/unix/sysv/linux/shmat.c, sysdeps/unix/sysv/linux/shmctl.c,
|
||||||
|
sysdeps/unix/sysv/linux/shmdt.c, sysdeps/unix/sysv/linux/shmget.c,
|
||||||
|
sysdeps/unix/sysv/linux/shutdown.S,
|
||||||
|
sysdeps/unix/sysv/linux/sigaction.S, sysdeps/unix/sysv/linux/signal.S,
|
||||||
|
sysdeps/unix/sysv/linux/sigpending.S, sysdeps/unix/sysv/linux/sigset.h,
|
||||||
|
sysdeps/unix/sysv/linux/sockaddrcom.h,
|
||||||
|
sysdeps/unix/sysv/linux/socketpair.S, sysdeps/unix/sysv/linux/speed.c,
|
||||||
|
sysdeps/unix/sysv/linux/statbuf.h, sysdeps/unix/sysv/linux/stty.S,
|
||||||
|
sysdeps/unix/sysv/linux/syscall.h, sysdeps/unix/sysv/linux/sysconf.c,
|
||||||
|
sysdeps/unix/sysv/linux/tcdrain.c, sysdeps/unix/sysv/linux/tcflow.c,
|
||||||
|
sysdeps/unix/sysv/linux/tcflush.c, sysdeps/unix/sysv/linux/tcgetattr.c,
|
||||||
|
sysdeps/unix/sysv/linux/tcsetattr.c,
|
||||||
|
sysdeps/unix/sysv/linux/termbits.h, sysdeps/unix/sysv/linux/ualarm.c,
|
||||||
|
sysdeps/unix/sysv/linux/ulimit.c, sysdeps/unix/sysv/linux/usleep.c,
|
||||||
|
sysdeps/unix/sysv/linux/utsnamelen.h, sysdeps/unix/sysv/linux/vfork.c,
|
||||||
|
sysdeps/unix/sysv/linux/wait.c, sysdeps/unix/sysv/linux/wait4.S,
|
||||||
|
sysdeps/unix/sysv/linux/waitpid.c, sysdeps/unix/sysv/linux/writev.c:
|
||||||
|
New Linux/ELF specific, architecture independent files.
|
||||||
|
|
||||||
|
sysdeps/unix/sysv/linux/i386/Dist,
|
||||||
|
sysdeps/unix/sysv/linux/i386/Makefile,
|
||||||
|
sysdeps/unix/sysv/linux/i386/brk.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/fcntlbits.h,
|
||||||
|
sysdeps/unix/sysv/linux/i386/fpu_control.c,
|
||||||
|
sysdeps/unix/sysv/linux/i386/fpu_control.h,
|
||||||
|
sysdeps/unix/sysv/linux/i386/fstat.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/fxstat.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/ieee_fpu.c,
|
||||||
|
sysdeps/unix/sysv/linux/i386/init-first.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/ipc.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/lstat.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/lxstat.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/mknod.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/mmap.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/sbrk.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/setfpucw.c,
|
||||||
|
sysdeps/unix/sysv/linux/i386/signum.h,
|
||||||
|
sysdeps/unix/sysv/linux/i386/socket.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/stat.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/syscall.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/sysdep.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/sysdep.h,
|
||||||
|
sysdeps/unix/sysv/linux/i386/xmknod.S,
|
||||||
|
sysdeps/unix/sysv/linux/i386/xstat.S:
|
||||||
|
New Linux i386/ELF specific files.
|
||||||
|
|
||||||
|
sysdeps/unix/sysv/linux/sys/ipc_buf.h,
|
||||||
|
sysdeps/unix/sysv/linux/sys/mman.h,
|
||||||
|
sysdeps/unix/sysv/linux/sys/msq_buf.h,
|
||||||
|
sysdeps/unix/sysv/linux/sys/sem_buf.h,
|
||||||
|
sysdeps/unix/sysv/linux/sys/shm_buf.h,
|
||||||
|
sysdeps/unix/sysv/linux/sys/socketcall.h,
|
||||||
|
sysdeps/unix/sysv/linux/sys/timex.h:
|
||||||
|
New Linux/ELF specific, architecture independent header files.
|
||||||
|
|
||||||
Wed Sep 6 19:41:10 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
|
Wed Sep 6 19:41:10 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
|
||||||
|
|
||||||
* elf/dl-lookup.c (_dl_lookup_symbol): Test WEAK_VALUE.s rather
|
* elf/dl-lookup.c (_dl_lookup_symbol): Test WEAK_VALUE.s rather
|
||||||
|
7
sysdeps/unix/sysv/linux/Implies
Normal file
7
sysdeps/unix/sysv/linux/Implies
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Linux has not yet (as of 1.3.18) the canonical set of <sys/mman.h>
|
||||||
|
# system calls. msync() and madvice() are missing, so their stubs
|
||||||
|
# are found here. I think later version will have them ones.
|
||||||
|
unix/mman
|
||||||
|
|
||||||
|
# Linux has network support in the kernel.
|
||||||
|
unix/inet
|
21
sysdeps/unix/sysv/linux/Makefile
Normal file
21
sysdeps/unix/sysv/linux/Makefile
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
ifeq ($(subdir), io)
|
||||||
|
sysdep_routines := $(sysdep_routines) fxstat lxstat xstat
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(subdir), misc)
|
||||||
|
sysdep_routines := $(sysdep_routines) xmknod
|
||||||
|
endif
|
||||||
|
|
||||||
|
#ifeq ($(subdir), posix)
|
||||||
|
#sysdep_routines := $(sysdep_routines) setpgrp
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ifeq ($(subdir), time)
|
||||||
|
sysdep_routines := $(sysdep_routines) adjtimex
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(subdir), sysvipc)
|
||||||
|
sysdep_routines := $(sysdep_routines) ipc
|
||||||
|
endif
|
||||||
|
|
||||||
|
headers := $(headers) sys/socketcall.h sys/timex.h
|
1
sysdeps/unix/sysv/linux/Subdirs
Normal file
1
sysdeps/unix/sysv/linux/Subdirs
Normal file
@ -0,0 +1 @@
|
|||||||
|
sysvipc
|
69
sysdeps/unix/sysv/linux/adjtime.c
Normal file
69
sysdeps/unix/sysv/linux/adjtime.c
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
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 <errno.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/timex.h>
|
||||||
|
|
||||||
|
#define MAX_SEC (LONG_MAX / 1000000L - 2)
|
||||||
|
#define MIN_SEC (LONG_MIN / 1000000L + 2)
|
||||||
|
|
||||||
|
int
|
||||||
|
__adjtime (itv, otv)
|
||||||
|
const struct timeval *itv;
|
||||||
|
struct timeval *otv;
|
||||||
|
{
|
||||||
|
struct timex tntx;
|
||||||
|
|
||||||
|
if (itv)
|
||||||
|
{
|
||||||
|
struct timeval tmp;
|
||||||
|
|
||||||
|
/* We will do some check here. */
|
||||||
|
tmp.tv_sec = itv->tv_sec + itv->tv_usec / 1000000L;
|
||||||
|
tmp.tv_usec = itv->tv_usec % 1000000L;
|
||||||
|
if (tmp.tv_sec > MAX_SEC || tmp.tv_sec < MIN_SEC)
|
||||||
|
{
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
tntx.offset = tmp.tv_usec + tmp.tv_sec * 1000000L;
|
||||||
|
tntx.mode = ADJ_OFFSET_SINGLESHOT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
tntx.mode = 0;
|
||||||
|
|
||||||
|
if (__adjtimex (&tntx) < 0) return -1;
|
||||||
|
|
||||||
|
if (otv)
|
||||||
|
{
|
||||||
|
if (tntx.offset < 0)
|
||||||
|
{
|
||||||
|
otv->tv_usec = -(-tntx.offset % 1000000);
|
||||||
|
otv->tv_sec = -(-tntx.offset / 1000000);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
otv->tv_usec = tntx.offset % 1000000;
|
||||||
|
otv->tv_sec = tntx.offset / 1000000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
weak_alias (__adjtime, adjtime)
|
22
sysdeps/unix/sysv/linux/adjtimex.S
Normal file
22
sysdeps/unix/sysv/linux/adjtimex.S
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
SYSCALL__ (adjtimex, 1)
|
||||||
|
ret
|
43
sysdeps/unix/sysv/linux/direct.h
Normal file
43
sysdeps/unix/sysv/linux/direct.h
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/* Copyright (C) 1992, 1993 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#ifndef _BSDDIR_H
|
||||||
|
#define _BSDDIR_H 1
|
||||||
|
|
||||||
|
#include <limits.h>
|
||||||
|
|
||||||
|
/* This is what system V calls a "struct dirent". */
|
||||||
|
|
||||||
|
struct direct
|
||||||
|
{
|
||||||
|
unsigned long int d_fileno;
|
||||||
|
long int d_off;
|
||||||
|
unsigned short int d_reclen;
|
||||||
|
char d_name[NAME_MAX + 1];
|
||||||
|
};
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
/* We calculate the length of the name by taking the length of the whole
|
||||||
|
`struct direct' record, subtracting the size of everything before the
|
||||||
|
name, and subtracting one for the terminating null. */
|
||||||
|
|
||||||
|
#define D_NAMLEN(d) \
|
||||||
|
((d)->d_reclen - offsetof (struct direct, d_name) - 1)
|
||||||
|
|
||||||
|
#endif
|
214
sysdeps/unix/sysv/linux/dl-machine.h
Normal file
214
sysdeps/unix/sysv/linux/dl-machine.h
Normal file
@ -0,0 +1,214 @@
|
|||||||
|
/* Machine-dependent ELF dynamic relocation inline functions.
|
||||||
|
i386/Linux version.
|
||||||
|
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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#define ELF_MACHINE_NAME "i386"
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <link.h>
|
||||||
|
#include <syscall.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
|
||||||
|
/* Return nonzero iff E_MACHINE is compatible with the running host. */
|
||||||
|
static inline int
|
||||||
|
elf_machine_matches_host (Elf32_Half e_machine)
|
||||||
|
{
|
||||||
|
switch (e_machine)
|
||||||
|
{
|
||||||
|
case EM_386:
|
||||||
|
case EM_486:
|
||||||
|
return 1;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Return the run-time address of the _GLOBAL_OFFSET_TABLE_.
|
||||||
|
Must be inlined in a function which uses global data. */
|
||||||
|
static inline Elf32_Addr *
|
||||||
|
elf_machine_got (void)
|
||||||
|
{
|
||||||
|
register Elf32_Addr *got asm ("%ebx");
|
||||||
|
return got;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Return the run-time load address of the shared object. */
|
||||||
|
static inline Elf32_Addr
|
||||||
|
elf_machine_load_address (void)
|
||||||
|
{
|
||||||
|
Elf32_Addr addr;
|
||||||
|
asm (" call here\n"
|
||||||
|
"here: popl %0\n"
|
||||||
|
" subl $here, %0"
|
||||||
|
: "=r" (addr));
|
||||||
|
return addr;
|
||||||
|
}
|
||||||
|
/* The `subl' insn above will contain an R_386_32 relocation entry
|
||||||
|
intended to insert the run-time address of the label `here'.
|
||||||
|
This will be the first relocation in the text of the dynamic linker;
|
||||||
|
we skip it to avoid trying to modify read-only text in this early stage. */
|
||||||
|
#define ELF_MACHINE_BEFORE_RTLD_RELOC(dynamic_info) \
|
||||||
|
++(const Elf32_Rel *) (dynamic_info)[DT_REL]->d_un.d_ptr; \
|
||||||
|
(dynamic_info)[DT_RELSZ]->d_un.d_val -= sizeof (Elf32_Rel)
|
||||||
|
|
||||||
|
/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
|
||||||
|
MAP is the object containing the reloc. */
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
elf_machine_rel (struct link_map *map,
|
||||||
|
const Elf32_Rel *reloc,
|
||||||
|
Elf32_Addr sym_loadaddr, const Elf32_Sym *sym)
|
||||||
|
{
|
||||||
|
Elf32_Addr *const reloc_addr = (void *) (map->l_addr + reloc->r_offset);
|
||||||
|
const Elf32_Addr sym_value = sym_loadaddr + sym->st_value;
|
||||||
|
|
||||||
|
switch (ELF32_R_TYPE (reloc->r_info))
|
||||||
|
{
|
||||||
|
case R_386_COPY:
|
||||||
|
memcpy (reloc_addr, (void *) sym_value, sym->st_size);
|
||||||
|
break;
|
||||||
|
case R_386_GLOB_DAT:
|
||||||
|
case R_386_JMP_SLOT:
|
||||||
|
*reloc_addr = sym_value;
|
||||||
|
break;
|
||||||
|
case R_386_32:
|
||||||
|
if (map->l_type == lt_interpreter)
|
||||||
|
{
|
||||||
|
/* Undo the relocation done here during bootstrapping. Now we will
|
||||||
|
relocate it anew, possibly using a binding found in the user
|
||||||
|
program or a loaded library rather than the dynamic linker's
|
||||||
|
built-in definitions used while loading those libraries. */
|
||||||
|
const Elf32_Sym *const dlsymtab
|
||||||
|
= (void *) (map->l_addr + map->l_info[DT_SYMTAB]->d_un.d_ptr);
|
||||||
|
*reloc_addr -= (map->l_addr +
|
||||||
|
dlsymtab[ELF32_R_SYM (reloc->r_info)].st_value);
|
||||||
|
}
|
||||||
|
*reloc_addr += sym_value;
|
||||||
|
break;
|
||||||
|
case R_386_RELATIVE:
|
||||||
|
if (map->l_type != lt_interpreter) /* Already done in dynamic linker. */
|
||||||
|
*reloc_addr += map->l_addr;
|
||||||
|
break;
|
||||||
|
case R_386_PC32:
|
||||||
|
*reloc_addr = sym_value - (Elf32_Addr) reloc_addr;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
assert (! "unexpected dynamic reloc type");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
elf_machine_lazy_rel (struct link_map *map, const Elf32_Rel *reloc)
|
||||||
|
{
|
||||||
|
Elf32_Addr *const reloc_addr = (void *) (map->l_addr + reloc->r_offset);
|
||||||
|
switch (ELF32_R_TYPE (reloc->r_info))
|
||||||
|
{
|
||||||
|
case R_386_JMP_SLOT:
|
||||||
|
*reloc_addr += map->l_addr;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
assert (! "unexpected PLT reloc type");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The i386 never uses Elf32_Rela relocations. */
|
||||||
|
#define ELF_MACHINE_NO_RELA 1
|
||||||
|
|
||||||
|
|
||||||
|
/* Set up the loaded object described by L so its unrelocated PLT
|
||||||
|
entries will jump to the on-demand fixup code in dl-runtime.c. */
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
elf_machine_runtime_setup (struct link_map *l)
|
||||||
|
{
|
||||||
|
Elf32_Addr *got;
|
||||||
|
extern void _dl_runtime_resolve (Elf32_Word);
|
||||||
|
|
||||||
|
/* The GOT entries for functions in the PLT have not yet been filled
|
||||||
|
in. Their initial contents will arrange when called to push an
|
||||||
|
offset into the .rel.plt section, push _GLOBAL_OFFSET_TABLE_[1],
|
||||||
|
and then jump to _GLOBAL_OFFSET_TABLE[2]. */
|
||||||
|
got = (Elf32_Addr *) (l->l_addr + l->l_info[DT_PLTGOT]->d_un.d_ptr);
|
||||||
|
got[1] = (Elf32_Addr) l; /* Identify this shared object. */
|
||||||
|
/* This function will get called to fix up the GOT entry indicated by
|
||||||
|
the offset on the stack, and then jump to the resolved address. */
|
||||||
|
got[2] = (Elf32_Addr) &_dl_runtime_resolve;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Mask identifying addresses reserved for the user program,
|
||||||
|
where the dynamic linker should not map anything. */
|
||||||
|
#define ELF_MACHINE_USER_ADDRESS_MASK 0xf8000000UL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Initial entry point code for the dynamic linker.
|
||||||
|
The C function `_dl_start' is the real entry point;
|
||||||
|
its return value is the user program's entry point. */
|
||||||
|
|
||||||
|
#define RTLD_START asm ("\
|
||||||
|
.text\n\
|
||||||
|
.globl _start\n\
|
||||||
|
.globl _dl_start_user\n\
|
||||||
|
_start:\n\
|
||||||
|
call _dl_start\n\
|
||||||
|
_dl_start_user:\n\
|
||||||
|
# Save the user entry point address in %edi.\n\
|
||||||
|
movl %eax, %edi\n\
|
||||||
|
# Point %ebx at the GOT.
|
||||||
|
call 0f\n\
|
||||||
|
0: popl %ebx\n\
|
||||||
|
addl $_GLOBAL_OFFSET_TABLE_+[.-0b], %ebx\n\
|
||||||
|
# See if we were run as a command with the executable file\n\
|
||||||
|
# name as an extra leading argument.\n\
|
||||||
|
movl rtld_command@GOT(%ebx), %eax\n\
|
||||||
|
movl (%eax),%eax\n\
|
||||||
|
testl %eax,%eax\n\
|
||||||
|
jz 0f\n\
|
||||||
|
# Pop the original argument count, decrement it, and replace\n\
|
||||||
|
# the original first argument pointer with the new count.\n\
|
||||||
|
popl %eax\n\
|
||||||
|
decl %eax\n\
|
||||||
|
movl %eax,(%esp)\n\
|
||||||
|
# Call _dl_init_next to return the address of an initializer\n\
|
||||||
|
# function to run.\n\
|
||||||
|
0: call _dl_init_next@PLT\n\
|
||||||
|
# Check for zero return, when out of initializers.\n\
|
||||||
|
testl %eax,%eax\n\
|
||||||
|
jz 1f\n\
|
||||||
|
# Call the shared object initializer function.\n\
|
||||||
|
# NOTE: We depend only on the registers (%ebx and %edi)\n\
|
||||||
|
# and the return address pushed by this call;\n\
|
||||||
|
# the initializer is called with the stack just\n\
|
||||||
|
# as it appears on entry, and it is free to move\n\
|
||||||
|
# the stack around, as long as it winds up jumping to\n\
|
||||||
|
# the return address on the top of the stack.\n\
|
||||||
|
call *%eax\n\
|
||||||
|
# Loop to call _dl_init_next for the next initializer.\n\
|
||||||
|
jmp 0b\n\
|
||||||
|
1: # Pass our finalizer function to the user in %edx, as per ELF ABI.\n\
|
||||||
|
movl _dl_fini@GOT(%ebx), %edx\n\
|
||||||
|
# Jump to the user's entry point.\n\
|
||||||
|
jmp *%edi\n\
|
||||||
|
");
|
1
sysdeps/unix/sysv/linux/errnos.h
Normal file
1
sysdeps/unix/sysv/linux/errnos.h
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <linux/errno.h>
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1991, 1992, 1995 Free Software Foundation, Inc.
|
/* Copyright (C) 1991, 1992, 1994, 1995 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -18,7 +18,7 @@ Cambridge, MA 02139, USA. */
|
|||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
|
|
||||||
SYSCALL__ (waitpid, 3)
|
SYSCALL__ (fork, 0)
|
||||||
ret
|
ret
|
||||||
|
|
||||||
weak_alias (__waitpid, waitpid)
|
weak_alias (__fork, fork)
|
96
sysdeps/unix/sysv/linux/gethostid.c
Normal file
96
sysdeps/unix/sysv/linux/gethostid.c
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
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 <errno.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#define HOSTIDFILE "/var/adm/hostid"
|
||||||
|
|
||||||
|
#ifdef SET_PROCEDURE
|
||||||
|
int
|
||||||
|
sethostid (id)
|
||||||
|
long int id;
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
ssize_t written;
|
||||||
|
|
||||||
|
/* Test for appropriate rights to set host ID. */
|
||||||
|
if (geteuid () || getuid ())
|
||||||
|
{
|
||||||
|
errno = EPERM;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Open file for writing. Everybody is allowed to read this file. */
|
||||||
|
fd = __open (HOSTIDFILE, O_CREAT|O_WRONLY, 0644);
|
||||||
|
if (fd < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
written = __write (fd, &id, sizeof (id));
|
||||||
|
|
||||||
|
__close (fd);
|
||||||
|
|
||||||
|
return written != sizeof (id) ? -1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
# include <sys/param.h>
|
||||||
|
# include <resolv/netdb.h>
|
||||||
|
# include <netinet/in.h>
|
||||||
|
|
||||||
|
long int
|
||||||
|
gethostid ()
|
||||||
|
{
|
||||||
|
char hostname[MAXHOSTNAMELEN + 1];
|
||||||
|
struct hostent *hp;
|
||||||
|
unsigned long id;
|
||||||
|
struct in_addr in;
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
/* First try to get the ID from a former invocation of sethostid. */
|
||||||
|
fd = __open (HOSTIDFILE, O_RDONLY);
|
||||||
|
if (fd >= 0)
|
||||||
|
{
|
||||||
|
ssize_t n = __read (fd, &id, sizeof (id));
|
||||||
|
|
||||||
|
__close (fd);
|
||||||
|
|
||||||
|
if (n == sizeof (id))
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Getting from the file was not succesful. An intelligent guess for
|
||||||
|
a unique number of a host is its IP address. Return this. */
|
||||||
|
if (gethostname (hostname, MAXHOSTNAMELEN) < 0 || hostname[0] == '\0')
|
||||||
|
/* This also fails. Return and arbitrary value. */
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* To get the IP address we need to knoe the host name. */
|
||||||
|
hp = gethostbyname (hostname);
|
||||||
|
if (hp == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
in.s_addr = 0;
|
||||||
|
memcpy (&in, hp->h_addr,
|
||||||
|
sizeof (in) < hp->h_length ? sizeof (in) : hp->h_length);
|
||||||
|
|
||||||
|
/* For the return value to be not exactly the IP address we do some
|
||||||
|
bit fiddling. */
|
||||||
|
return in.s_addr << 16 | in.s_addr >> 16;
|
||||||
|
}
|
||||||
|
#endif
|
53
sysdeps/unix/sysv/linux/gethostname.c
Normal file
53
sysdeps/unix/sysv/linux/gethostname.c
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/* Copyright (C) 1992, 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/utsname.h>
|
||||||
|
|
||||||
|
/* Put the name of the current host in no more than LEN bytes of NAME.
|
||||||
|
The result is null-terminated if LEN is large enough for the full
|
||||||
|
name and the terminator. */
|
||||||
|
int
|
||||||
|
__gethostname (name, len)
|
||||||
|
char *name;
|
||||||
|
size_t len;
|
||||||
|
{
|
||||||
|
struct utsname buf;
|
||||||
|
|
||||||
|
if (name == NULL)
|
||||||
|
{
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (uname (&buf))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (strlen (buf.nodename) + 1 > len)
|
||||||
|
{
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy (name, buf.nodename);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
weak_alias (__gethostname, gethostname)
|
22
sysdeps/unix/sysv/linux/getpgid.S
Normal file
22
sysdeps/unix/sysv/linux/getpgid.S
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
SYSCALL (getpgid, 1)
|
||||||
|
ret
|
22
sysdeps/unix/sysv/linux/getpgrp.S
Normal file
22
sysdeps/unix/sysv/linux/getpgrp.S
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
SYSCALL (getpgrp, 0)
|
||||||
|
ret
|
2
sysdeps/unix/sysv/linux/getsockopt.S
Normal file
2
sysdeps/unix/sysv/linux/getsockopt.S
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define socket getsockopt
|
||||||
|
#include <socket.S>
|
22
sysdeps/unix/sysv/linux/gtty.S
Normal file
22
sysdeps/unix/sysv/linux/gtty.S
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
SYSCALL (gtty, 2)
|
||||||
|
ret
|
1
sysdeps/unix/sysv/linux/i386/Dist
Normal file
1
sysdeps/unix/sysv/linux/i386/Dist
Normal file
@ -0,0 +1 @@
|
|||||||
|
fxstat.S lxstat.S xmknod.S xstat.S
|
7
sysdeps/unix/sysv/linux/i386/Makefile
Normal file
7
sysdeps/unix/sysv/linux/i386/Makefile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
ifeq ($(subdir), misc)
|
||||||
|
sysdep_routines := $(sysdep_routines) fpu_control setfpucw
|
||||||
|
|
||||||
|
extra-libs := $(extra-libs) libieee
|
||||||
|
libieee-routines := ieee_fpu
|
||||||
|
libieee-inhibit-o := .so .po
|
||||||
|
endif
|
60
sysdeps/unix/sysv/linux/i386/brk.S
Normal file
60
sysdeps/unix/sysv/linux/i386/brk.S
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/* Copyright (C) 1991, 1992, 1993, 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
.data
|
||||||
|
.globl C_SYMBOL_NAME(__curbrk)
|
||||||
|
C_LABEL(__curbrk)
|
||||||
|
#ifdef PIC
|
||||||
|
.long 0
|
||||||
|
#else
|
||||||
|
# ifdef HAVE_GNU_LD
|
||||||
|
.long C_SYMBOL_NAME(_end)
|
||||||
|
# else
|
||||||
|
.long C_SYMBOL_NAME(end)
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
.text
|
||||||
|
.globl C_SYMBOL_NAME(syscall_error)
|
||||||
|
|
||||||
|
ENTRY (__brk)
|
||||||
|
movl %ebx, %edx
|
||||||
|
movl $SYS_ify(brk), %eax
|
||||||
|
movl 4(%esp), %ebx
|
||||||
|
int $0x80
|
||||||
|
movl %edx, %ebx
|
||||||
|
|
||||||
|
cmpl 4(%esp), %eax
|
||||||
|
jne JUMPTARGET(syscall_error)
|
||||||
|
|
||||||
|
#ifdef PIC
|
||||||
|
/* Standard PIC nonsense to store into `__curbrk' through the GOT. */
|
||||||
|
call here
|
||||||
|
here: popl %ecx
|
||||||
|
addl $_GLOBAL_OFFSET_TABLE_+[.-here], %ecx
|
||||||
|
movl C_SYMBOL_NAME(__curbrk@GOT)(%ecx), %ecx
|
||||||
|
movl %eax, (%ecx)
|
||||||
|
#else
|
||||||
|
movl %eax, C_SYMBOL_NAME(__curbrk)
|
||||||
|
#endif
|
||||||
|
xorl %eax, %eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
weak_alias (__brk, brk)
|
26
sysdeps/unix/sysv/linux/i386/fcntlbits.h
Normal file
26
sysdeps/unix/sysv/linux/i386/fcntlbits.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/* O_*, F_*, FD_* bit values for Linux.
|
||||||
|
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 _FCNTLBITS_H
|
||||||
|
#define _FCNTLBITS_H 1
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <linux/fcntl.h>
|
||||||
|
|
||||||
|
#endif /* fcntlbits.h */
|
20
sysdeps/unix/sysv/linux/i386/fpu_control.c
Normal file
20
sysdeps/unix/sysv/linux/i386/fpu_control.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/* Default control word for ix86 FPU.
|
||||||
|
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. */
|
||||||
|
|
||||||
|
unsigned short ___fpu_control = 0;
|
100
sysdeps/unix/sysv/linux/i386/fpu_control.h
Normal file
100
sysdeps/unix/sysv/linux/i386/fpu_control.h
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Olaf Flebbe.
|
||||||
|
|
||||||
|
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 _FPU_CONTROL_H
|
||||||
|
#define _FPU_CONTROL_H
|
||||||
|
|
||||||
|
/* Here is the dirty part. Settup up your 387 through the control word
|
||||||
|
* (cw) register.
|
||||||
|
*
|
||||||
|
* 15-13 12 11-10 9-8 7-6 5 4 3 2 1 0
|
||||||
|
* | reserved | IC | RC | PC | reserved | PM | UM | OM | ZM | DM | IM
|
||||||
|
*
|
||||||
|
* IM: Invalid operation mask
|
||||||
|
* DM: Denormalized operand mask
|
||||||
|
* ZM: Zero-divide mask
|
||||||
|
* OM: Overflow mask
|
||||||
|
* UM: Underflow mask
|
||||||
|
* PM: Precision (inexact result) mask
|
||||||
|
*
|
||||||
|
* Mask bit is 1 means no interrupt.
|
||||||
|
*
|
||||||
|
* PC: Precision control
|
||||||
|
* 11 - round to extended precision
|
||||||
|
* 10 - round to double precision
|
||||||
|
* 00 - round to single precision
|
||||||
|
*
|
||||||
|
* RC: Rounding control
|
||||||
|
* 00 - rounding to nearest
|
||||||
|
* 01 - rounding down (toward - infinity)
|
||||||
|
* 10 - rounding up (toward + infinity)
|
||||||
|
* 11 - rounding toward zero
|
||||||
|
*
|
||||||
|
* IC: Infinity control
|
||||||
|
* That is for 8087 and 80287 only.
|
||||||
|
*
|
||||||
|
* The hardware default is 0x037f. I choose 0x1372.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <features.h>
|
||||||
|
|
||||||
|
/* masking of interrupts */
|
||||||
|
#define _FPU_MASK_IM 0x01
|
||||||
|
#define _FPU_MASK_DM 0x02
|
||||||
|
#define _FPU_MASK_ZM 0x04
|
||||||
|
#define _FPU_MASK_OM 0x08
|
||||||
|
#define _FPU_MASK_UM 0x10
|
||||||
|
#define _FPU_MASK_PM 0x20
|
||||||
|
|
||||||
|
/* precision control */
|
||||||
|
#define _FPU_EXTENDED 0x300 /* RECOMMENDED */
|
||||||
|
#define _FPU_DOUBLE 0x200
|
||||||
|
#define _FPU_SINGLE 0x0 /* DO NOT USE */
|
||||||
|
|
||||||
|
/* rounding control */
|
||||||
|
#define _FPU_RC_NEAREST 0x0 /* RECOMMENDED */
|
||||||
|
#define _FPU_RC_DOWN 0x400
|
||||||
|
#define _FPU_RC_UP 0x800
|
||||||
|
#define _FPU_RC_ZERO 0xC00
|
||||||
|
|
||||||
|
#define _FPU_RESERVED 0xF0C0 /* Reserved bits in cw */
|
||||||
|
|
||||||
|
|
||||||
|
/* Now two recommended cw */
|
||||||
|
|
||||||
|
/* Linux default:
|
||||||
|
- extended precision
|
||||||
|
- rounding to nearest
|
||||||
|
- exceptions on overflow, zero divide and NaN */
|
||||||
|
#define _FPU_DEFAULT 0x1372
|
||||||
|
|
||||||
|
/* IEEE: same as above, but exceptions */
|
||||||
|
#define _FPU_IEEE 0x137f
|
||||||
|
|
||||||
|
/* private namespace. It should only be used in init-first.o. */
|
||||||
|
extern unsigned short __fpu_control;
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
/* called in init-first.o. It can be used to manipulate 387 control word. */
|
||||||
|
extern void __setfpucw __P ((unsigned short));
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
#endif /* fpu_control.h */
|
4
sysdeps/unix/sysv/linux/i386/fstat.S
Normal file
4
sysdeps/unix/sysv/linux/i386/fstat.S
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#define __stat __fstat
|
||||||
|
#define stat fstat
|
||||||
|
#define __xstat __fxstat
|
||||||
|
#include "stat.S"
|
4
sysdeps/unix/sysv/linux/i386/fxstat.S
Normal file
4
sysdeps/unix/sysv/linux/i386/fxstat.S
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#define __xstat __fxstat
|
||||||
|
#define _xstat _fxstat
|
||||||
|
#define stat fstat
|
||||||
|
#include "xstat.S"
|
22
sysdeps/unix/sysv/linux/i386/ieee_fpu.c
Normal file
22
sysdeps/unix/sysv/linux/i386/ieee_fpu.c
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* Default control word for ix86 FPU.
|
||||||
|
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. */
|
||||||
|
|
||||||
|
#include <fpu_control.h>
|
||||||
|
|
||||||
|
unsigned short ___fpu_control = _FPU_IEEE;
|
84
sysdeps/unix/sysv/linux/i386/init-first.S
Normal file
84
sysdeps/unix/sysv/linux/i386/init-first.S
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
/* Initialization code run first thing by the ELF startup code.
|
||||||
|
For i386/Linux.
|
||||||
|
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. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
/* Called from start.S. Not: there is no value in %ebx. */
|
||||||
|
|
||||||
|
ENTRY (__libc_init_first)
|
||||||
|
|
||||||
|
/* Make sure we are not using iBSC2 personality. */
|
||||||
|
movl $SYS_ify (personality), %eax
|
||||||
|
xorl %ebx, %ebx
|
||||||
|
int $0x80
|
||||||
|
|
||||||
|
#ifdef PIC
|
||||||
|
/* Set control work of FPU. */
|
||||||
|
call .L0
|
||||||
|
.L0: popl %ebx
|
||||||
|
addl $_GLOBAL_OFFSET_TABLE_+[.-.L0], %ebx
|
||||||
|
movzwl C_SYMBOL_NAME(___fpu_control@GOT)(%ebx), %eax
|
||||||
|
#else
|
||||||
|
movzwl ___fpu_control, %eax
|
||||||
|
#endif
|
||||||
|
pushl %eax
|
||||||
|
call JUMPTARGET(__setfpucw)
|
||||||
|
addl $4, %esp
|
||||||
|
|
||||||
|
/* That is all for now. */
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
/* This is only a dummy function for the list below. */
|
||||||
|
.type _dummy_exit, @function
|
||||||
|
C_LABEL(_dummy_exit)
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
.section .init,"ax",@progbits
|
||||||
|
movl 16(%ebp), %edx /* envp */
|
||||||
|
movl 12(%ebp), %ecx /* argv */
|
||||||
|
movl 8(%ebp), %eax /* argc */
|
||||||
|
pushl %edx
|
||||||
|
pushl %ecx
|
||||||
|
pushl %eax
|
||||||
|
|
||||||
|
call JUMPTARGET(__libc_init)
|
||||||
|
|
||||||
|
addl $12, %esp
|
||||||
|
|
||||||
|
|
||||||
|
/* Make sure __libc_subinit section is always present. */
|
||||||
|
.section __libc_subinit, "a", @progbits
|
||||||
|
.align 4
|
||||||
|
.type __elf_set___libc_subinit_element__dummy_exit__, @object
|
||||||
|
.size __elf_set___libc_subinit_element__dummy_exit__, 4
|
||||||
|
__elf_set___libc_subinit_element__dummy_exit__:
|
||||||
|
.long _dummy_exit
|
||||||
|
|
||||||
|
/* Make sure __libc_atexit section is always present. */
|
||||||
|
.section __libc_atexit, "a", @progbits
|
||||||
|
.align 4
|
||||||
|
.type __elf_set___libc_atexit_element__dummy_exit__, @object
|
||||||
|
.size __elf_set___libc_atexit_element__dummy_exit__, 4
|
||||||
|
__elf_set___libc_atexit_element__dummy_exit__:
|
||||||
|
.long _dummy_exit
|
22
sysdeps/unix/sysv/linux/i386/ipc.S
Normal file
22
sysdeps/unix/sysv/linux/i386/ipc.S
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
SYSCALL__ (ipc, 5)
|
||||||
|
ret
|
4
sysdeps/unix/sysv/linux/i386/lstat.S
Normal file
4
sysdeps/unix/sysv/linux/i386/lstat.S
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#define __stat __lstat
|
||||||
|
#define stat lstat
|
||||||
|
#define __xstat __lxstat
|
||||||
|
#include "stat.S"
|
4
sysdeps/unix/sysv/linux/i386/lxstat.S
Normal file
4
sysdeps/unix/sysv/linux/i386/lxstat.S
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#define __xstat __lxstat
|
||||||
|
#define _xstat _lxstat
|
||||||
|
#define stat lstat
|
||||||
|
#include "xstat.S"
|
39
sysdeps/unix/sysv/linux/i386/mknod.S
Normal file
39
sysdeps/unix/sysv/linux/i386/mknod.S
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
/* In Linux the `mknod' call is actually done by a emulation of the
|
||||||
|
`xmknod' system call, which takes an additional first argument
|
||||||
|
giving a version number for the interface. This macro gives the
|
||||||
|
Linux version number that corresponds to the modern interface. */
|
||||||
|
#define _MKNOD_VER 1
|
||||||
|
|
||||||
|
ENTRY (__mknod)
|
||||||
|
movl 12(%esp), %edx
|
||||||
|
movl 8(%esp), %ecx
|
||||||
|
movl 4(%esp), %eax
|
||||||
|
pushl %edx
|
||||||
|
pushl %ecx
|
||||||
|
pushl %eax
|
||||||
|
pushl $_MKNOD_VER /* Push extra first arg to syscall. */
|
||||||
|
call JUMPTARGET(__xmknod)
|
||||||
|
addl $16, %esp /* Correct version parameter offset. */
|
||||||
|
ret
|
||||||
|
|
||||||
|
weak_alias (__mknod, mknod)
|
45
sysdeps/unix/sysv/linux/i386/mmap.S
Normal file
45
sysdeps/unix/sysv/linux/i386/mmap.S
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
.globl syscall_error
|
||||||
|
|
||||||
|
ENTRY (__mmap)
|
||||||
|
|
||||||
|
/* Save registers. */
|
||||||
|
movl %ebx, %edx
|
||||||
|
|
||||||
|
movl $SYS_ify(mmap), %eax /* System call number in %eax. */
|
||||||
|
|
||||||
|
lea 4(%esp), %ebx /* Address of args is 1st arg. */
|
||||||
|
|
||||||
|
/* Do the system call trap. */
|
||||||
|
int $0x80
|
||||||
|
|
||||||
|
/* Restore registers. */
|
||||||
|
movl %edx, %ebx
|
||||||
|
|
||||||
|
/* %eax is < 0 if there was an error. */
|
||||||
|
testl %eax, %eax
|
||||||
|
jl JUMPTARGET(syscall_error)
|
||||||
|
|
||||||
|
/* Successful; return the syscall's value. */
|
||||||
|
ret
|
||||||
|
|
||||||
|
weak_alias (__mmap, mmap)
|
82
sysdeps/unix/sysv/linux/i386/sbrk.S
Normal file
82
sysdeps/unix/sysv/linux/i386/sbrk.S
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
.data
|
||||||
|
.globl C_SYMBOL_NAME(__curbrk)
|
||||||
|
|
||||||
|
.text
|
||||||
|
.globl C_SYMBOL_NAME(syscall_error)
|
||||||
|
|
||||||
|
ENTRY (__sbrk)
|
||||||
|
|
||||||
|
movl %ebx, %edx
|
||||||
|
|
||||||
|
#ifdef PIC
|
||||||
|
/* Standard PIC nonsense to access `__curbrk' through the GOT. */
|
||||||
|
call .L0
|
||||||
|
.L0: popl %ecx
|
||||||
|
addl $_GLOBAL_OFFSET_TABLE_+[.-.L0], %ecx
|
||||||
|
|
||||||
|
movl C_SYMBOL_NAME(__curbrk@GOT)(%ecx), %ecx
|
||||||
|
movl (%ecx), %ebx
|
||||||
|
movl %ebx, %eax
|
||||||
|
testl %ebx, %ebx
|
||||||
|
jne .L1
|
||||||
|
|
||||||
|
/* We have to initialize `__curbrk' first. */
|
||||||
|
movl $SYS_ify(brk), %eax
|
||||||
|
int $0x80
|
||||||
|
|
||||||
|
movl %eax, (%ecx)
|
||||||
|
movl %eax, %ebx
|
||||||
|
.align 16, 0x90
|
||||||
|
|
||||||
|
.L1:
|
||||||
|
#else
|
||||||
|
movl C_SYMBOL_NAME(__curbrk), %ebx
|
||||||
|
movl %ebx, %eax
|
||||||
|
#endif
|
||||||
|
|
||||||
|
addl 4(%esp), %ebx
|
||||||
|
cmpl %ebx, %eax
|
||||||
|
je .L2
|
||||||
|
|
||||||
|
movl $SYS_ify(brk), %eax
|
||||||
|
int $0x80
|
||||||
|
|
||||||
|
cmpl %eax, %ebx
|
||||||
|
jne .L3
|
||||||
|
|
||||||
|
#ifdef PIC
|
||||||
|
xchgl %eax, (%ecx)
|
||||||
|
#else
|
||||||
|
xchgl %eax, C_SYMBOL_NAME(__curbrk)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
.L2:
|
||||||
|
movl %edx, %ebx
|
||||||
|
ret
|
||||||
|
|
||||||
|
.align 16
|
||||||
|
.L3:
|
||||||
|
movl %edx, %ebx
|
||||||
|
jmp JUMPTARGET(syscall_error)
|
||||||
|
|
||||||
|
weak_alias (__sbrk, sbrk)
|
43
sysdeps/unix/sysv/linux/i386/setfpucw.c
Normal file
43
sysdeps/unix/sysv/linux/i386/setfpucw.c
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Olaf Flebbe.
|
||||||
|
|
||||||
|
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 <fpu_control.h>
|
||||||
|
|
||||||
|
void
|
||||||
|
__setfpucw (fpu_control)
|
||||||
|
unsigned short fpu_control;
|
||||||
|
{
|
||||||
|
volatile unsigned short cw;
|
||||||
|
|
||||||
|
/* If user supplied _fpu_control, use it ! */
|
||||||
|
if (!fpu_control)
|
||||||
|
{
|
||||||
|
/* use linux defaults */
|
||||||
|
fpu_control = _FPU_DEFAULT;
|
||||||
|
}
|
||||||
|
/* Get Control Word */
|
||||||
|
__asm__ volatile ("fnstcw %0" : "=m" (cw) : );
|
||||||
|
|
||||||
|
/* mask in */
|
||||||
|
cw &= _FPU_RESERVED;
|
||||||
|
cw = cw | (fpu_control & ~_FPU_RESERVED);
|
||||||
|
|
||||||
|
/* set cw */
|
||||||
|
__asm__ volatile ("fldcw %0" :: "m" (cw));
|
||||||
|
}
|
66
sysdeps/unix/sysv/linux/i386/signum.h
Normal file
66
sysdeps/unix/sysv/linux/i386/signum.h
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
/* Signal number definitions. Linux version.
|
||||||
|
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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#ifdef _SIGNAL_H
|
||||||
|
|
||||||
|
/* Fake signal functions. */
|
||||||
|
#define SIG_ERR ((__sighandler_t) -1) /* Error return. */
|
||||||
|
#define SIG_DFL ((__sighandler_t) 0) /* Default action. */
|
||||||
|
#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */
|
||||||
|
|
||||||
|
|
||||||
|
/* Signals. */
|
||||||
|
#define SIGHUP 1 /* Hangup (POSIX). */
|
||||||
|
#define SIGINT 2 /* Interrupt (ANSI). */
|
||||||
|
#define SIGQUIT 3 /* Quit (POSIX). */
|
||||||
|
#define SIGILL 4 /* Illegal instruction (ANSI). */
|
||||||
|
#define SIGTRAP 5 /* Trace trap (POSIX). */
|
||||||
|
#define SIGABRT SIGIOT /* Abort (ANSI). */
|
||||||
|
#define SIGIOT 6 /* IOT trap (4.2 BSD). */
|
||||||
|
#define SIGBUS 7 /* BUS error (4.2 BSD). */
|
||||||
|
#define SIGFPE 8 /* Floating-point exception (ANSI). */
|
||||||
|
#define SIGKILL 9 /* Kill, unblockable (POSIX). */
|
||||||
|
#define SIGUSR1 10 /* User-defined signal 1 (POSIX). */
|
||||||
|
#define SIGSEGV 11 /* Segmentation violation (ANSI). */
|
||||||
|
#define SIGUSR2 12 /* User-defined signal 2 (POSIX). */
|
||||||
|
#define SIGPIPE 13 /* Broken pipe (POSIX). */
|
||||||
|
#define SIGALRM 14 /* Alarm clock (POSIX). */
|
||||||
|
#define SIGTERM 15 /* Termination (ANSI). */
|
||||||
|
#define SIGSTKFLT 16 /* ??? */
|
||||||
|
#define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */
|
||||||
|
#define SIGCHLD 17 /* Child status has changed (POSIX). */
|
||||||
|
#define SIGCONT 18 /* Continue (POSIX). */
|
||||||
|
#define SIGSTOP 19 /* Stop, unblockable (POSIX). */
|
||||||
|
#define SIGTSTP 20 /* Keyboard stop (POSIX). */
|
||||||
|
#define SIGTTIN 21 /* Background read from tty (POSIX). */
|
||||||
|
#define SIGTTOU 22 /* Background write to tty (POSIX). */
|
||||||
|
#define SIGURG 23 /* Urgent condition on socket (4.2 BSD). */
|
||||||
|
#define SIGXCPU 24 /* CPU limit exceeded (4.2 BSD). */
|
||||||
|
#define SIGXFSZ 25 /* File size limit exceeded (4.2 BSD). */
|
||||||
|
#define SIGVTALRM 26 /* Virtual alarm clock (4.2 BSD). */
|
||||||
|
#define SIGPROF 27 /* Profiling alarm clock (4.2 BSD). */
|
||||||
|
#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */
|
||||||
|
#define SIGPOLL SIGIO /* Pollable event occured (System V). */
|
||||||
|
#define SIGIO 29 /* I/O now possible (4.2 BSD). */
|
||||||
|
#define SIGPWR 30 /* Power failure restart (System V). */
|
||||||
|
#define SIGUNUSED 31
|
||||||
|
|
||||||
|
#endif /* <signal.h> included. */
|
||||||
|
|
||||||
|
#define _NSIG 32 /* Biggest signal number + 1. */
|
@ -19,6 +19,9 @@ Cambridge, MA 02139, USA. */
|
|||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <sys/socketcall.h>
|
#include <sys/socketcall.h>
|
||||||
|
|
||||||
|
#define P(a, b) P2(a, b)
|
||||||
|
#define P2(a, b) a##b
|
||||||
|
|
||||||
.globl syscall_error
|
.globl syscall_error
|
||||||
|
|
||||||
/* The socket-oriented system calls are handled unusally in Linux.
|
/* The socket-oriented system calls are handled unusally in Linux.
|
||||||
@ -29,15 +32,16 @@ Cambridge, MA 02139, USA. */
|
|||||||
|
|
||||||
The .S files for the other calls just #define socket and #include this. */
|
The .S files for the other calls just #define socket and #include this. */
|
||||||
|
|
||||||
ENTRY (socket)
|
.globl P(__,socket)
|
||||||
|
ENTRY (P(__,socket))
|
||||||
|
|
||||||
/* Save registers. */
|
/* Save registers. */
|
||||||
movl %ebx, %edx
|
movl %ebx, %edx
|
||||||
|
|
||||||
movl $SYS_socketcall, %eax /* System call number in %eax. */
|
movl $SYS_ify(socketcall), %eax /* System call number in %eax. */
|
||||||
|
|
||||||
/* Use ## so `socket' is a separate token that might be #define'd. */
|
/* Use ## so `socket' is a separate token that might be #define'd. */
|
||||||
movl $SYS_##socket, %ebx /* Subcode is first arg to syscall. */
|
movl $P(SOCKOP_,socket), %ebx /* Subcode is first arg to syscall. */
|
||||||
lea 8(%esp), %ecx /* Address of args is 2nd arg. */
|
lea 8(%esp), %ecx /* Address of args is 2nd arg. */
|
||||||
|
|
||||||
/* Do the system call trap. */
|
/* Do the system call trap. */
|
||||||
@ -52,3 +56,5 @@ ENTRY (socket)
|
|||||||
|
|
||||||
/* Successful; return the syscall's value. */
|
/* Successful; return the syscall's value. */
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
weak_alias (P(__,socket), socket)
|
38
sysdeps/unix/sysv/linux/i386/stat.S
Normal file
38
sysdeps/unix/sysv/linux/i386/stat.S
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
/* In Linux the `stat' call is actually done by emulating a `xstat' system
|
||||||
|
call, which takes an additional first argument giving a version number
|
||||||
|
for `struct stat'. Likewise for `fstat' and `lstat' there are `fxstat'
|
||||||
|
and `lxstat' emulations. This macro gives the Linux version number that
|
||||||
|
corresponds to the definition of `struct stat' in <statbuf.h>. */
|
||||||
|
#define _STAT_VER 1
|
||||||
|
|
||||||
|
ENTRY (__stat)
|
||||||
|
movl 8(%esp), %eax
|
||||||
|
movl 4(%esp), %ecx
|
||||||
|
pushl %eax
|
||||||
|
pushl %ecx
|
||||||
|
pushl $_STAT_VER /* Push extra first arg to syscall. */
|
||||||
|
call JUMPTARGET(__xstat)/* Jump to xstat implementation. */
|
||||||
|
addl $12, %esp
|
||||||
|
ret
|
||||||
|
|
||||||
|
weak_alias (__stat, stat)
|
@ -18,12 +18,14 @@ Cambridge, MA 02139, USA. */
|
|||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
|
|
||||||
ASM_GLOBAL_DIRECTIVE syscall_error
|
.globl syscall_error
|
||||||
ENTRY (syscall)
|
ENTRY (syscall)
|
||||||
popl %ecx /* Pop return address into %ecx. */
|
popl %ecx /* Pop return address into %ecx. */
|
||||||
popl %eax /* Pop syscall number into %eax. */
|
popl %eax /* Pop syscall number into %eax. */
|
||||||
pushl %ecx /* Push back return address. */
|
pushl %ecx /* Push back return address. */
|
||||||
DO_CALL (5) /* Frob the args and do the system call. */
|
DO_CALL (5) /* Frob the args and do the system call. */
|
||||||
|
movl (%esp), %ecx
|
||||||
|
pushl %ecx
|
||||||
testl %eax, %eax /* Check %eax for error. */
|
testl %eax, %eax /* Check %eax for error. */
|
||||||
jl JUMPTARGET(syscall_error) /* Jump to error handler if negative. */
|
jl JUMPTARGET(syscall_error) /* Jump to error handler if negative. */
|
||||||
ret /* Return to caller. */
|
ret /* Return to caller. */
|
@ -20,8 +20,21 @@ Cambridge, MA 02139, USA. */
|
|||||||
The code for Linux is almost identical to the canonical Unix/i386
|
The code for Linux is almost identical to the canonical Unix/i386
|
||||||
code, except that the error number in %eax is negated. */
|
code, except that the error number in %eax is negated. */
|
||||||
|
|
||||||
|
.globl __syscall_error
|
||||||
__syscall_error:
|
__syscall_error:
|
||||||
negl %eax
|
negl %eax
|
||||||
|
|
||||||
#define __syscall_error __syscall_error_1
|
#define __syscall_error __syscall_error_1
|
||||||
#include <sysdeps/unix/i386/sysdep.S>
|
#include <sysdeps/unix/i386/sysdep.S>
|
||||||
|
|
||||||
|
/* Because the Linux version is in fact i386/ELF and the start.? file
|
||||||
|
for this system (sysdeps/i386/elf/start.S) is also used by The Hurd
|
||||||
|
and therefore this files must not contain the definition of the
|
||||||
|
`errno' variable (I don't know why, ask Roland), we have to define
|
||||||
|
it somewhere else.
|
||||||
|
|
||||||
|
...and this please is here. */
|
||||||
|
.data
|
||||||
|
.globl errno
|
||||||
|
errno:
|
||||||
|
.long 0
|
135
sysdeps/unix/sysv/linux/i386/sysdep.h
Normal file
135
sysdeps/unix/sysv/linux/i386/sysdep.h
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
/* Copyright (C) 1992, 1993, 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
/* In the Linux/ELF world, C symbols are asm symbols. */
|
||||||
|
#define NO_UNDERSCORES
|
||||||
|
|
||||||
|
/* There is some commonality. */
|
||||||
|
#include <sysdeps/unix/i386/sysdep.h>
|
||||||
|
|
||||||
|
/* For Linux we can use the system call table in the header file
|
||||||
|
/usr/include/asm/unistd.h
|
||||||
|
of the kernel. But these symbols do not follow the SYS_* syntax
|
||||||
|
so we have to redefine the `SYS_ify' macro here. */
|
||||||
|
#undef SYS_ify
|
||||||
|
#ifdef __STDC__
|
||||||
|
# define SYS_ify(syscall_name) __NR_##syscall_name
|
||||||
|
#else
|
||||||
|
# define SYS_ify(syscall_name) __NR_/**/syscall_name
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ASSEMBLER
|
||||||
|
|
||||||
|
/* Linux uses a negative return value to indicate syscall errors, unlike
|
||||||
|
most Unices, which use the condition codes' carry flag. */
|
||||||
|
#undef PSEUDO
|
||||||
|
#define PSEUDO(name, syscall_name, args) \
|
||||||
|
.text; \
|
||||||
|
.globl syscall_error; \
|
||||||
|
ENTRY (name) \
|
||||||
|
movl $SYS_ify (syscall_name), %eax; \
|
||||||
|
DO_CALL (args); \
|
||||||
|
testl %eax, %eax; \
|
||||||
|
jl JUMPTARGET (syscall_error)
|
||||||
|
|
||||||
|
/* We define our own ENTRY macro because the alignment should be 16 for ELF. */
|
||||||
|
#undef ENTRY
|
||||||
|
#define ENTRY(name) \
|
||||||
|
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (name); \
|
||||||
|
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME (name), @function) \
|
||||||
|
.align 16; \
|
||||||
|
C_LABEL (name)
|
||||||
|
|
||||||
|
/* Linux takes system call arguments in registers:
|
||||||
|
|
||||||
|
syscall number %eax call-clobbered
|
||||||
|
arg 1 %ebx call-saved
|
||||||
|
arg 2 %ecx call-clobbered
|
||||||
|
arg 3 %edx call-clobbered
|
||||||
|
arg 4 %esi call-saved
|
||||||
|
arg 5 %edi call-saved
|
||||||
|
|
||||||
|
The stack layout upon entering the function is:
|
||||||
|
|
||||||
|
20(%esp) Arg# 5
|
||||||
|
16(%esp) Arg# 4
|
||||||
|
12(%esp) Arg# 3
|
||||||
|
8(%esp) Arg# 2
|
||||||
|
4(%esp) Arg# 1
|
||||||
|
(%esp) Return address
|
||||||
|
|
||||||
|
(Of course a function with say 3 arguments does not have entries for
|
||||||
|
arguments 4 and 5.)
|
||||||
|
|
||||||
|
The following code tries hard to be optimal. A general assuption
|
||||||
|
(which is true accoriding to the data books I have) is that
|
||||||
|
|
||||||
|
2 * xchg is more expensive than pushl + movl + popl
|
||||||
|
|
||||||
|
Beside this a neat trick is used. The calling conventions for Linux
|
||||||
|
tell that among the registers used for parameters %ecx and %edx need
|
||||||
|
not be saved. Beside this we may clobber this registers even when
|
||||||
|
they are not used for parameter passing.
|
||||||
|
|
||||||
|
As a result one can see below that we save the content of the %ebx
|
||||||
|
register in the %edx register when we have less than 3 arguments
|
||||||
|
(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. */
|
||||||
|
|
||||||
|
#undef DO_CALL
|
||||||
|
#define DO_CALL(args) \
|
||||||
|
DOARGS_##args \
|
||||||
|
int $0x80; \
|
||||||
|
UNDOARGS_##args
|
||||||
|
|
||||||
|
#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 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 DOARGS_2 movl 8(%esp), %ecx; DOARGS_1
|
||||||
|
#define UNDOARGS_2 UNDOARGS_1
|
||||||
|
#define _DOARGS_2(n) movl n(%esp), %ecx; _DOARGS_1 (n-4)
|
||||||
|
#define _UNDOARGS_2 _UNDOARGS_1
|
||||||
|
|
||||||
|
#define DOARGS_3 _DOARGS_3 (12)
|
||||||
|
#define UNDOARGS_3 _UNDOARGS_3
|
||||||
|
#define _DOARGS_3(n) movl n(%esp), %edx; _DOARGS_2 (n-4)
|
||||||
|
#define _UNDOARGS_3 _UNDOARGS_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
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* ASSEMBLER */
|
49
sysdeps/unix/sysv/linux/i386/xmknod.S
Normal file
49
sysdeps/unix/sysv/linux/i386/xmknod.S
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
#include <errnos.h>
|
||||||
|
|
||||||
|
.globl syscall_error
|
||||||
|
ENTRY (__xmknod)
|
||||||
|
popl %ecx /* Pop return address into %eax. */
|
||||||
|
popl %edx /* Pop version number into %edx. */
|
||||||
|
pushl %ecx /* Push back the return address. */
|
||||||
|
|
||||||
|
movl $SYS_ify(mknod), %eax
|
||||||
|
/* Load syscall number for prev_stat in %eax. */
|
||||||
|
cmpl $1, %edx /* Version 1 xstat call? */
|
||||||
|
je .L1 /* Yes, do syscall. */
|
||||||
|
|
||||||
|
movl $-EINVAL, %eax /* Load error code into %eax. */
|
||||||
|
jmp .L2
|
||||||
|
|
||||||
|
.L1: DO_CALL (3) /* Do the syscall. */
|
||||||
|
|
||||||
|
movl (%esp), %ecx
|
||||||
|
testl %eax, %eax /* Check for error. */
|
||||||
|
jl .L2
|
||||||
|
|
||||||
|
jmp *%ecx /* Return success. */
|
||||||
|
|
||||||
|
.L2: pushl %ecx
|
||||||
|
jmp JUMPTARGET(syscall_error)
|
||||||
|
/* Yes, then branch to error handling. */
|
||||||
|
|
||||||
|
/* For compatibility with Linux libc. */
|
||||||
|
weak_alias (__xmknod, _xmknod)
|
51
sysdeps/unix/sysv/linux/i386/xstat.S
Normal file
51
sysdeps/unix/sysv/linux/i386/xstat.S
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
#include <errnos.h>
|
||||||
|
|
||||||
|
#define SYS_expand(name) SYS_ify(name)
|
||||||
|
|
||||||
|
.globl syscall_error
|
||||||
|
ENTRY (__xstat)
|
||||||
|
popl %ecx /* Pop return address into %eax. */
|
||||||
|
popl %edx /* Pop version number into %edx. */
|
||||||
|
pushl %ecx /* Push back the return address. */
|
||||||
|
|
||||||
|
movl $SYS_expand(stat), %eax
|
||||||
|
/* Load syscall number for prev_stat in %eax. */
|
||||||
|
cmpl $1, %edx /* Version 1 xstat call? */
|
||||||
|
je .L1 /* Yes, do syscall. */
|
||||||
|
|
||||||
|
movl $-EINVAL, %eax /* Load error code into %eax. */
|
||||||
|
jmp .L2
|
||||||
|
|
||||||
|
.L1: DO_CALL (2) /* Do the syscall. */
|
||||||
|
|
||||||
|
movl (%esp), %ecx
|
||||||
|
testl %eax, %eax /* Check for error. */
|
||||||
|
jl .L2
|
||||||
|
|
||||||
|
jmp *%ecx /* Return success. */
|
||||||
|
|
||||||
|
.L2: pushl %ecx
|
||||||
|
jmp JUMPTARGET(syscall_error)
|
||||||
|
/* Yes, then branch to error handling. */
|
||||||
|
|
||||||
|
/* For compatibility with Linux libc. */
|
||||||
|
weak_alias (__xstat, _xstat)
|
31
sysdeps/unix/sysv/linux/local_lim.h
Normal file
31
sysdeps/unix/sysv/linux/local_lim.h
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/* Minimum guaranteed maximum values for system limits. Hurd version.
|
||||||
|
|
||||||
|
Copyright (C) 1993, 1994 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., 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
|
1
sysdeps/unix/sysv/linux/madvise.c
Normal file
1
sysdeps/unix/sysv/linux/madvise.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <sysdeps/stub/madvise.c>
|
32
sysdeps/unix/sysv/linux/msgctl.c
Normal file
32
sysdeps/unix/sysv/linux/msgctl.c
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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 <sys/msg.h>
|
||||||
|
|
||||||
|
/* Allows to control internal state and destruction of message queue
|
||||||
|
objects. */
|
||||||
|
|
||||||
|
int
|
||||||
|
msgctl (msqid, cmd, buf)
|
||||||
|
int msqid;
|
||||||
|
int cmd;
|
||||||
|
struct msqid_ds *buf;
|
||||||
|
{
|
||||||
|
return __ipc (IPCOP_msgctl, msqid, cmd, 0, buf);
|
||||||
|
}
|
32
sysdeps/unix/sysv/linux/msgget.c
Normal file
32
sysdeps/unix/sysv/linux/msgget.c
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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 <sys/msg.h>
|
||||||
|
#include <stdlib.h> /* for definition of NULL */
|
||||||
|
|
||||||
|
/* Return descriptor for message queue associated with KEY. The MSGFLG
|
||||||
|
parameter describes how to proceed with clashing of key values. */
|
||||||
|
|
||||||
|
int
|
||||||
|
msgget (key, msgflg)
|
||||||
|
key_t key;
|
||||||
|
int msgflg;
|
||||||
|
{
|
||||||
|
return __ipc (IPCOP_msgget, key, msgflg, 0, NULL);
|
||||||
|
}
|
38
sysdeps/unix/sysv/linux/msgrcv.c
Normal file
38
sysdeps/unix/sysv/linux/msgrcv.c
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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 <sys/msg.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
msgrcv (msqid, msgp, msgsz, msgtyp, msgflg)
|
||||||
|
int msqid;
|
||||||
|
void *msgp;
|
||||||
|
size_t msgsz;
|
||||||
|
long msgtyp;
|
||||||
|
int msgflg;
|
||||||
|
{
|
||||||
|
/* The problem here is that Linux' calling convention only allows up to
|
||||||
|
fives parameters to a system call. */
|
||||||
|
struct ipc_kludge tmp;
|
||||||
|
|
||||||
|
tmp.msgp = msgp;
|
||||||
|
tmp.msgtyp = msgtyp;
|
||||||
|
|
||||||
|
return __ipc (IPCOP_msgrcv, msqid, msgsz, msgflg, &tmp);
|
||||||
|
}
|
30
sysdeps/unix/sysv/linux/msgsnd.c
Normal file
30
sysdeps/unix/sysv/linux/msgsnd.c
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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 <sys/msg.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
msgsnd (msqid, msgp, msgsz, msgflg)
|
||||||
|
int msqid;
|
||||||
|
void *msgp;
|
||||||
|
size_t msgsz;
|
||||||
|
int msgflg;
|
||||||
|
{
|
||||||
|
return __ipc (IPCOP_msgsnd, msqid, msgsz, msgflg, msgp);
|
||||||
|
}
|
24
sysdeps/unix/sysv/linux/pipe.S
Normal file
24
sysdeps/unix/sysv/linux/pipe.S
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
SYSCALL__ (pipe, 1)
|
||||||
|
ret
|
||||||
|
|
||||||
|
weak_alias (__pipe, pipe)
|
1
sysdeps/unix/sysv/linux/poll.c
Normal file
1
sysdeps/unix/sysv/linux/poll.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <sysdeps/stub/poll.c>
|
1
sysdeps/unix/sysv/linux/readv.c
Normal file
1
sysdeps/unix/sysv/linux/readv.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <sysdeps/posix/readv.c>
|
2
sysdeps/unix/sysv/linux/recv.S
Normal file
2
sysdeps/unix/sysv/linux/recv.S
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define socket recv
|
||||||
|
#include <socket.S>
|
2
sysdeps/unix/sysv/linux/recvfrom.S
Normal file
2
sysdeps/unix/sysv/linux/recvfrom.S
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define socket recvfrom
|
||||||
|
#include <socket.S>
|
2
sysdeps/unix/sysv/linux/recvmsg.S
Normal file
2
sysdeps/unix/sysv/linux/recvmsg.S
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define socket recvmsg
|
||||||
|
#include <socket.S>
|
33
sysdeps/unix/sysv/linux/semctl.c
Normal file
33
sysdeps/unix/sysv/linux/semctl.c
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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 <sys/sem.h>
|
||||||
|
|
||||||
|
/* Return identifier for array of NSEMS semaphores associated with
|
||||||
|
KEY. */
|
||||||
|
|
||||||
|
int
|
||||||
|
semctl (semid, semnum, cmd, arg)
|
||||||
|
int semid;
|
||||||
|
int semnum;
|
||||||
|
int cmd;
|
||||||
|
union semun arg;
|
||||||
|
{
|
||||||
|
return __ipc (IPCOP_semctl, semid, semnum, cmd, &arg);
|
||||||
|
}
|
33
sysdeps/unix/sysv/linux/semget.c
Normal file
33
sysdeps/unix/sysv/linux/semget.c
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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 <sys/sem.h>
|
||||||
|
#include <stdlib.h> /* for definition of NULL */
|
||||||
|
|
||||||
|
/* Return identifier for array of NSEMS semaphores associated with
|
||||||
|
KEY. */
|
||||||
|
|
||||||
|
int
|
||||||
|
semget (key, nsems, semflg)
|
||||||
|
key_t key;
|
||||||
|
int nsems;
|
||||||
|
int semflg;
|
||||||
|
{
|
||||||
|
return __ipc (IPCOP_semget, key, nsems, semflg, NULL);
|
||||||
|
}
|
31
sysdeps/unix/sysv/linux/semop.c
Normal file
31
sysdeps/unix/sysv/linux/semop.c
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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 <sys/sem.h>
|
||||||
|
|
||||||
|
/* Perform user-defined atomical operation of array of semaphores. */
|
||||||
|
|
||||||
|
int
|
||||||
|
semop (semid, sops, nsops)
|
||||||
|
int semid;
|
||||||
|
struct sembuf *sops;
|
||||||
|
unsigned int nsops;
|
||||||
|
{
|
||||||
|
return __ipc (IPCOP_semop, semid, (int) nsops, 0, sops);
|
||||||
|
}
|
2
sysdeps/unix/sysv/linux/send.S
Normal file
2
sysdeps/unix/sysv/linux/send.S
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define socket send
|
||||||
|
#include <socket.S>
|
2
sysdeps/unix/sysv/linux/sendmsg.S
Normal file
2
sysdeps/unix/sysv/linux/sendmsg.S
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define socket sendmsg
|
||||||
|
#include <socket.S>
|
2
sysdeps/unix/sysv/linux/sendto.S
Normal file
2
sysdeps/unix/sysv/linux/sendto.S
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define socket sendto
|
||||||
|
#include <socket.S>
|
1
sysdeps/unix/sysv/linux/setegid.c
Normal file
1
sysdeps/unix/sysv/linux/setegid.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <sysdeps/unix/bsd/setegid.c>
|
36
sysdeps/unix/sysv/linux/seteuid.c
Normal file
36
sysdeps/unix/sysv/linux/seteuid.c
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
__seteuid (uid)
|
||||||
|
uid_t uid;
|
||||||
|
{
|
||||||
|
if (uid == (uid_t) ~0)
|
||||||
|
{
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return __setreuid (-1, uid);
|
||||||
|
}
|
||||||
|
|
||||||
|
weak_alias (__seteuid, seteuid)
|
2
sysdeps/unix/sysv/linux/sethostid.c
Normal file
2
sysdeps/unix/sysv/linux/sethostid.c
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define SET_PROCEDURE 1
|
||||||
|
#include "gethostid.c"
|
22
sysdeps/unix/sysv/linux/setpgid.S
Normal file
22
sysdeps/unix/sysv/linux/setpgid.S
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
SYSCALL (setpgid, 2)
|
||||||
|
ret
|
25
sysdeps/unix/sysv/linux/setpgrp.c
Normal file
25
sysdeps/unix/sysv/linux/setpgrp.c
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
setpgrp ()
|
||||||
|
{
|
||||||
|
return setpgid (0, 0);
|
||||||
|
}
|
2
sysdeps/unix/sysv/linux/setsockopt.S
Normal file
2
sysdeps/unix/sysv/linux/setsockopt.S
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define socket setsockopt
|
||||||
|
#include <socket.S>
|
24
sysdeps/unix/sysv/linux/settimeofday.S
Normal file
24
sysdeps/unix/sysv/linux/settimeofday.S
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
SYSCALL__ (settimeofday, 2)
|
||||||
|
ret
|
||||||
|
|
||||||
|
weak_alias (__settimeofday, settimeofday)
|
37
sysdeps/unix/sysv/linux/shmat.c
Normal file
37
sysdeps/unix/sysv/linux/shmat.c
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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 <sys/sem.h>
|
||||||
|
|
||||||
|
/* Attach the shared memory segment associated with SHMID to the data
|
||||||
|
segment of the calling process. SHMADDR and SHMFLG determine how
|
||||||
|
and where the segment is attached. */
|
||||||
|
|
||||||
|
char *
|
||||||
|
shmat (shmid, shmaddr, shmflg)
|
||||||
|
int shmid;
|
||||||
|
char *shmaddr;
|
||||||
|
int shmflg;
|
||||||
|
{
|
||||||
|
int retval;
|
||||||
|
unsigned long raddr;
|
||||||
|
|
||||||
|
retval = __ipc (IPCOP_shmat, shmid, shmflg, (int) &raddr, shmaddr);
|
||||||
|
return retval < 0 ? (char *) retval : (char *) raddr;
|
||||||
|
}
|
31
sysdeps/unix/sysv/linux/shmctl.c
Normal file
31
sysdeps/unix/sysv/linux/shmctl.c
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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 <sys/shm.h>
|
||||||
|
|
||||||
|
/* Provide operations to control over shared memory segments. */
|
||||||
|
|
||||||
|
int
|
||||||
|
shmctl (shmid, cmd, buf)
|
||||||
|
int shmid;
|
||||||
|
int cmd;
|
||||||
|
struct shmid_ds *buf;
|
||||||
|
{
|
||||||
|
return __ipc (IPCOP_shmctl, shmid, cmd, 0, buf);
|
||||||
|
}
|
30
sysdeps/unix/sysv/linux/shmdt.c
Normal file
30
sysdeps/unix/sysv/linux/shmdt.c
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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 <sys/shm.h>
|
||||||
|
|
||||||
|
/* Detach shared memory segment starting at address specified by SHMADDR
|
||||||
|
from the caller's data segment. */
|
||||||
|
|
||||||
|
int
|
||||||
|
shmdt (shmaddr)
|
||||||
|
char *shmaddr;
|
||||||
|
{
|
||||||
|
return __ipc (IPCOP_shmdt, 0, 0, 0, shmaddr);
|
||||||
|
}
|
33
sysdeps/unix/sysv/linux/shmget.c
Normal file
33
sysdeps/unix/sysv/linux/shmget.c
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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 <sys/shm.h>
|
||||||
|
#include <stdlib.h> /* for definition of NULL */
|
||||||
|
|
||||||
|
/* Return an identifier for an shared memory segment of at least size SIZE
|
||||||
|
which is associated with KEY. */
|
||||||
|
|
||||||
|
int
|
||||||
|
shmget (key, size, shmflg)
|
||||||
|
key_t key;
|
||||||
|
int size;
|
||||||
|
int shmflg;
|
||||||
|
{
|
||||||
|
return __ipc (IPCOP_shmget, key, size, shmflg, NULL);
|
||||||
|
}
|
2
sysdeps/unix/sysv/linux/shutdown.S
Normal file
2
sysdeps/unix/sysv/linux/shutdown.S
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define socket shutdown
|
||||||
|
#include <socket.S>
|
24
sysdeps/unix/sysv/linux/sigaction.S
Normal file
24
sysdeps/unix/sysv/linux/sigaction.S
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
SYSCALL__ (sigaction, 3)
|
||||||
|
ret
|
||||||
|
|
||||||
|
weak_alias (__sigaction, sigaction)
|
8
sysdeps/unix/sysv/linux/signal.S
Normal file
8
sysdeps/unix/sysv/linux/signal.S
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include <sysdeps/unix/sysv/signal.S>
|
||||||
|
|
||||||
|
/* Used in siginterrupt() */
|
||||||
|
|
||||||
|
.data
|
||||||
|
.globl _sigintr
|
||||||
|
_sigintr:
|
||||||
|
.long 0
|
1
sysdeps/unix/sysv/linux/sigpending.S
Normal file
1
sysdeps/unix/sysv/linux/sigpending.S
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <sysdeps/unix/sysv/sco3.2.4/sigpending.S>
|
1
sysdeps/unix/sysv/linux/sigset.h
Normal file
1
sysdeps/unix/sysv/linux/sigset.h
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <sysdeps/generic/sigset.h>
|
37
sysdeps/unix/sysv/linux/sockaddrcom.h
Normal file
37
sysdeps/unix/sysv/linux/sockaddrcom.h
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/* Definition of `struct sockaddr_*' common members. Generic/4.2 BSD version.
|
||||||
|
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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#ifndef _SOCKADDRCOM_H
|
||||||
|
#define _SOCKADDRCOM_H 1
|
||||||
|
|
||||||
|
/* This prevents including the file <linux/socket.h>. */
|
||||||
|
#define _LINUX_SOCKET_H
|
||||||
|
#define _LINUX_TYPES_H
|
||||||
|
|
||||||
|
/* This macro is used to declare the initial common members
|
||||||
|
of the data types used for socket addresses, `struct sockaddr',
|
||||||
|
`struct sockaddr_in', `struct sockaddr_un', etc. */
|
||||||
|
|
||||||
|
#define __SOCKADDR_COMMON(sa_prefix) \
|
||||||
|
unsigned short int sa_prefix##family
|
||||||
|
|
||||||
|
#define __SOCKADDR_COMMON_SIZE (sizeof (unsigned short int))
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* sockaddrcom.h */
|
103
sysdeps/unix/sysv/linux/speed.c
Normal file
103
sysdeps/unix/sysv/linux/speed.c
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
/* `struct termios' speed frobnication functions. Linux version.
|
||||||
|
Copyright (C) 1991, 1992, 1993, 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <termios.h>
|
||||||
|
|
||||||
|
static const speed_t speeds[] =
|
||||||
|
{
|
||||||
|
0,
|
||||||
|
50,
|
||||||
|
75,
|
||||||
|
110,
|
||||||
|
134,
|
||||||
|
150,
|
||||||
|
200,
|
||||||
|
300,
|
||||||
|
600,
|
||||||
|
1200,
|
||||||
|
1800,
|
||||||
|
2400,
|
||||||
|
4800,
|
||||||
|
9600,
|
||||||
|
19200,
|
||||||
|
38400,
|
||||||
|
38400, /* Mention this twice here is a trick. */
|
||||||
|
57600,
|
||||||
|
115200,
|
||||||
|
230400,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Return the output baud rate stored in *TERMIOS_P. */
|
||||||
|
speed_t
|
||||||
|
cfgetospeed (termios_p)
|
||||||
|
const struct termios *termios_p;
|
||||||
|
{
|
||||||
|
speed_t retval = termios_p->c_cflag & (CBAUD | CBAUDEX);
|
||||||
|
|
||||||
|
if (retval & CBAUDEX)
|
||||||
|
{
|
||||||
|
retval &= ~CBAUDEX;
|
||||||
|
retval |= CBAUD + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return the input baud rate stored in *TERMIOS_P.
|
||||||
|
For Linux there is no difference between input and output speed. */
|
||||||
|
strong_alias (cfgetospeed, cfgetispeed);
|
||||||
|
|
||||||
|
/* Set the output baud rate stored in *TERMIOS_P to SPEED. */
|
||||||
|
int
|
||||||
|
cfsetospeed (termios_p, speed)
|
||||||
|
struct termios *termios_p;
|
||||||
|
speed_t speed;
|
||||||
|
{
|
||||||
|
register unsigned int i;
|
||||||
|
|
||||||
|
if (termios_p == NULL)
|
||||||
|
{
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This allows either B1200 or 1200 to work. XXX
|
||||||
|
Do we really want to try to support this, given that
|
||||||
|
fetching the speed must return one or the other? */
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof (speeds) / sizeof (speeds[0]); ++i)
|
||||||
|
if (i == speed || speeds[i] == speed)
|
||||||
|
{
|
||||||
|
termios_p->c_cflag &= ~(CBAUD | CBAUDEX);
|
||||||
|
termios_p->c_cflag |= (i & CBAUD);
|
||||||
|
if (i & ~CBAUD)
|
||||||
|
termios_p->c_cflag |= CBAUDEX;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the input baud rate stored in *TERMIOS_P to SPEED.
|
||||||
|
For Linux there is no difference between input and output speed. */
|
||||||
|
strong_alias (cfsetospeed, cfsetispeed);
|
72
sysdeps/unix/sysv/linux/statbuf.h
Normal file
72
sysdeps/unix/sysv/linux/statbuf.h
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
/* Copyright (C) 1992, 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#ifndef _STATBUF_H
|
||||||
|
#define _STATBUF_H
|
||||||
|
|
||||||
|
struct stat
|
||||||
|
{
|
||||||
|
short int st_dev; /* Device. */
|
||||||
|
unsigned short __pad1;
|
||||||
|
unsigned long int st_ino; /* File serial number. */
|
||||||
|
unsigned short int st_mode; /* File mode. */
|
||||||
|
unsigned short int st_nlink; /* Link count. */
|
||||||
|
unsigned short int st_uid; /* User ID of the file's owner. */
|
||||||
|
unsigned short int st_gid; /* Group ID of the file's group.*/
|
||||||
|
unsigned short int st_rdev; /* Device number, if device. */
|
||||||
|
unsigned short int __pad2;
|
||||||
|
long int st_size; /* Size of file, in bytes. */
|
||||||
|
unsigned long int st_blksize; /* Optimal block size for I/O. */
|
||||||
|
#define _STATBUF_ST_BLKSIZE /* Tell code we have this member. */
|
||||||
|
|
||||||
|
unsigned long int st_blocks; /* Number of 512-byte blocks allocated. */
|
||||||
|
long int st_atime; /* Time of last access. */
|
||||||
|
unsigned long int __unused1;
|
||||||
|
long int st_mtime; /* Time of last modification. */
|
||||||
|
unsigned long int __unused2;
|
||||||
|
long int st_ctime; /* Time of last status change. */
|
||||||
|
unsigned long int __unused3;
|
||||||
|
unsigned long int __unused4;
|
||||||
|
unsigned long int __unused5;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 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. */
|
||||||
|
|
||||||
|
#endif /* statbuf.h */
|
22
sysdeps/unix/sysv/linux/stty.S
Normal file
22
sysdeps/unix/sysv/linux/stty.S
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
SYSCALL (stty, 2)
|
||||||
|
ret
|
84
sysdeps/unix/sysv/linux/sys/ipc_buf.h
Normal file
84
sysdeps/unix/sysv/linux/sys/ipc_buf.h
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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_IPC_BUF_H
|
||||||
|
#define _SYS_IPC_BUF_H
|
||||||
|
|
||||||
|
#include <features.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
/* Mode bits for `msgget', `semget', and `shmget'. */
|
||||||
|
#define IPC_CREAT 01000 /* create key if key does not exist */
|
||||||
|
#define IPC_EXCL 02000 /* fail if key exists */
|
||||||
|
#define IPC_NOWAIT 04000 /* return error on wait */
|
||||||
|
|
||||||
|
/* Control commands for `msgctl', `semctl', and `shmctl'. */
|
||||||
|
#define IPC_RMID 0 /* remove identifier */
|
||||||
|
#define IPC_SET 1 /* set `ipc_perm' options */
|
||||||
|
#define IPC_STAT 2 /* get `ipc_perm' options */
|
||||||
|
#define IPC_INFO 3 /* see ipcs */
|
||||||
|
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
/* Special key values. */
|
||||||
|
#define IPC_PRIVATE ((key_t) 0) /* private key */
|
||||||
|
|
||||||
|
|
||||||
|
/* Data structure used to pass permission information to IPC operations. */
|
||||||
|
struct ipc_perm
|
||||||
|
{
|
||||||
|
key_t __key; /* key */
|
||||||
|
__uid_t uid; /* owner's user ID */
|
||||||
|
__gid_t gid; /* owner's group ID */
|
||||||
|
__uid_t cuid; /* creator's user ID */
|
||||||
|
__gid_t cgid; /* creator's group ID */
|
||||||
|
__mode_t mode; /* read/write permission */
|
||||||
|
unsigned short int __seq; /* sequence number */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Kludge to work around Linux' restriction of only up to five
|
||||||
|
arguments to a system call. */
|
||||||
|
struct ipc_kludge
|
||||||
|
{
|
||||||
|
void *msgp;
|
||||||
|
long msgtyp;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* The actual system call: all functions are multiplexed by this. */
|
||||||
|
extern int __ipc __P ((int __call, int __first, int __second, int __third,
|
||||||
|
void *__ptr));
|
||||||
|
|
||||||
|
/* The codes for the functions to use the multiplexer `__ipc'. */
|
||||||
|
#define IPCOP_semop 1
|
||||||
|
#define IPCOP_semget 2
|
||||||
|
#define IPCOP_semctl 3
|
||||||
|
#define IPCOP_msgsnd 11
|
||||||
|
#define IPCOP_msgrcv 12
|
||||||
|
#define IPCOP_msgget 13
|
||||||
|
#define IPCOP_msgctl 14
|
||||||
|
#define IPCOP_shmat 21
|
||||||
|
#define IPCOP_shmdt 22
|
||||||
|
#define IPCOP_shmget 23
|
||||||
|
#define IPCOP_shmctl 24
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
#endif /* sys/ipc_buf.h */
|
112
sysdeps/unix/sysv/linux/sys/mman.h
Normal file
112
sysdeps/unix/sysv/linux/sys/mman.h
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
/* Definitions for BSD-style memory management. Linux version.
|
||||||
|
Copyright (C) 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
|
||||||
|
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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
/* These are the bits used by 4.4 BSD and its derivatives. On systems
|
||||||
|
(such as GNU) where these facilities are not system services but can be
|
||||||
|
emulated in the C library, these are the definitions we emulate. */
|
||||||
|
|
||||||
|
#ifndef _SYS_MMAN_H
|
||||||
|
|
||||||
|
#define _SYS_MMAN_H 1
|
||||||
|
#include <features.h>
|
||||||
|
|
||||||
|
#include <gnu/types.h>
|
||||||
|
#define __need_size_t
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* Protections are chosen from these bits, OR'd together. The
|
||||||
|
implementation does not necessarily support PROT_EXEC or PROT_WRITE
|
||||||
|
without PROT_READ. The only guarantees are that no writing will be
|
||||||
|
allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
|
||||||
|
|
||||||
|
#define PROT_NONE 0x00 /* No access. */
|
||||||
|
#define PROT_READ 0x01 /* Pages can be read. */
|
||||||
|
#define PROT_WRITE 0x02 /* Pages can be written. */
|
||||||
|
#define PROT_EXEC 0x04 /* Pages can be executed. */
|
||||||
|
|
||||||
|
|
||||||
|
/* Flags contain mapping type, sharing type and options. */
|
||||||
|
|
||||||
|
/* Mapping type (must choose one and only one of these). */
|
||||||
|
#define MAP_FILE 0x0000 /* Mapped from a file or device. */
|
||||||
|
#define MAP_ANON 0x0020 /* Allocated from anonymous virtual memory. */
|
||||||
|
#define MAP_TYPE 0x000f /* Mask for type field. */
|
||||||
|
|
||||||
|
/* Sharing types (must choose one and only one of these). */
|
||||||
|
#define MAP_COPY MAP_PRIVATE /* Virtual copy of region at mapping time. */
|
||||||
|
#define MAP_SHARED 0x0001 /* Share changes. */
|
||||||
|
#define MAP_PRIVATE 0x0002 /* Changes private; copy pages on write. */
|
||||||
|
|
||||||
|
/* Other flags. */
|
||||||
|
#define MAP_FIXED 0x0010 /* Map address must be exactly as requested. */
|
||||||
|
#define MAP_NOEXTEND 0x0000 /* For MAP_FILE, don't change file size.
|
||||||
|
Not available on Linux??? */
|
||||||
|
#define MAP_HASSEMPHORE 0x0000 /* Region may contain semaphores.
|
||||||
|
Not available on Linux??? */
|
||||||
|
#define MAP_INHERIT 0x0000 /* Region is retained after exec.
|
||||||
|
Not available on Linux??? */
|
||||||
|
|
||||||
|
/* Advice to `madvise'. */
|
||||||
|
#define MADV_NORMAL 0 /* No further special treatment. */
|
||||||
|
#define MADV_RANDOM 1 /* Expect random page references. */
|
||||||
|
#define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
|
||||||
|
#define MADV_WILLNEED 3 /* Will need these pages. */
|
||||||
|
#define MADV_DONTNEED 4 /* Don't need these pages. */
|
||||||
|
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
/* Map addresses starting near ADDR and extending for LEN bytes. from
|
||||||
|
OFFSET into the file FD describes according to PROT and FLAGS. If ADDR
|
||||||
|
is nonzero, it is the desired mapping address. If the MAP_FIXED bit is
|
||||||
|
set in FLAGS, the mapping will be at ADDR exactly (which must be
|
||||||
|
page-aligned); otherwise the system chooses a convenient nearby address.
|
||||||
|
The return value is the actual mapping address chosen or (caddr_t) -1
|
||||||
|
for errors (in which case `errno' is set). A successful `mmap' call
|
||||||
|
deallocates any previous mapping for the affected region. */
|
||||||
|
|
||||||
|
__caddr_t __mmap __P ((__caddr_t __addr, size_t __len,
|
||||||
|
int __prot, int __flags, int __fd, __off_t __offset));
|
||||||
|
__caddr_t mmap __P ((__caddr_t __addr, size_t __len,
|
||||||
|
int __prot, int __flags, int __fd, __off_t __offset));
|
||||||
|
|
||||||
|
/* Deallocate any mapping for the region starting at ADDR and extending LEN
|
||||||
|
bytes. Returns 0 if successful, -1 for errors (and sets errno). */
|
||||||
|
int __munmap __P ((__caddr_t __addr, size_t __len));
|
||||||
|
int munmap __P ((__caddr_t __addr, size_t __len));
|
||||||
|
|
||||||
|
/* Change the memory protection of the region starting at ADDR and
|
||||||
|
extending LEN bytes to PROT. Returns 0 if successful, -1 for errors
|
||||||
|
(and sets errno). */
|
||||||
|
int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
|
||||||
|
|
||||||
|
/* Synchronize the region starting at ADDR and extending LEN bytes with the
|
||||||
|
file it maps. Filesystem operations on a file being mapped are
|
||||||
|
unpredictable before this is done. */
|
||||||
|
int msync __P ((__caddr_t __addr, size_t __len));
|
||||||
|
|
||||||
|
/* Advise the system about particular usage patterns the program follows
|
||||||
|
for the region starting at ADDR and extending LEN bytes. */
|
||||||
|
int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* sys/mman.h */
|
54
sysdeps/unix/sysv/linux/sys/msq_buf.h
Normal file
54
sysdeps/unix/sysv/linux/sys/msq_buf.h
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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_MSQ_BUF_H
|
||||||
|
#define _SYS_MSQ_BUF_H
|
||||||
|
|
||||||
|
#include <features.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
/* Define options for message queue functions. */
|
||||||
|
#define MSG_NOERROR 010000 /* no error if message is too big */
|
||||||
|
#define MSG_EXCEPT 020000 /* recv any msg except of specified type */
|
||||||
|
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
/* Structure of record for one message inside the kernel.
|
||||||
|
The type `struct __msg' is opaque. */
|
||||||
|
struct msqid_ds
|
||||||
|
{
|
||||||
|
struct ipc_perm msg_perm; /* structure describing operation permission */
|
||||||
|
struct msg *__msg_first; /* pointer to first message on queue */
|
||||||
|
struct msg *__msg_last; /* pointer to last message on queue */
|
||||||
|
__time_t msg_stime; /* time of last msgsnd command */
|
||||||
|
__time_t msg_rtime; /* time of last msgrcv command */
|
||||||
|
__time_t msg_ctime; /* time of last change */
|
||||||
|
struct wait_queue *__wwait; /* ??? */
|
||||||
|
struct wait_queue *__rwait; /* ??? */
|
||||||
|
unsigned short int __msg_cbytes;/* current number of bytes on queue */
|
||||||
|
unsigned short int msg_qnum; /* number of messages currently on queue */
|
||||||
|
unsigned short int msg_qbytes;/* max number of bytes allowed on queue */
|
||||||
|
__pid_t msg_lspid; /* pid of last msgsnd() */
|
||||||
|
__pid_t msg_lrpid; /* pid of last msgrcv() */
|
||||||
|
};
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
#endif /* sys/msq_buf.h */
|
65
sysdeps/unix/sysv/linux/sys/sem_buf.h
Normal file
65
sysdeps/unix/sysv/linux/sys/sem_buf.h
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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_SEM_BUF_H
|
||||||
|
#define _SYS_SEM_BUF_H
|
||||||
|
|
||||||
|
#include <features.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
/* Flags for `semop'. */
|
||||||
|
#define SEM_UNDO 0x1000 /* undo the operation on exit */
|
||||||
|
|
||||||
|
/* Commands for `semctl'. */
|
||||||
|
#define GETPID 11 /* get sempid */
|
||||||
|
#define GETVAL 12 /* get semval */
|
||||||
|
#define GETALL 13 /* get all semval's */
|
||||||
|
#define GETNCNT 14 /* get semncnt */
|
||||||
|
#define GETZCNT 15 /* get semzcnt */
|
||||||
|
#define SETVAL 16 /* set semval */
|
||||||
|
#define SETALL 17 /* set all semval's */
|
||||||
|
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
/* Data structure describing a set of semaphores. */
|
||||||
|
struct semid_ds
|
||||||
|
{
|
||||||
|
struct ipc_perm sem_perm; /* operation permisson struct */
|
||||||
|
__time_t sem_otime; /* last semop() time */
|
||||||
|
__time_t sem_ctime; /* last time changed by semctl() */
|
||||||
|
struct sem *__sembase; /* ptr to first semaphore in array */
|
||||||
|
struct sem_queue *__sem_pending; /* pending operations */
|
||||||
|
struct sem_queue *__sem_pending_last; /* last pending operation */
|
||||||
|
struct sem_undo *__undo; /* ondo requests on this array */
|
||||||
|
unsigned short int sem_nsems; /* number of semaphores in set */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Union used for argument for `semctl'. */
|
||||||
|
union semun
|
||||||
|
{
|
||||||
|
int val; /* value for SETVAL */
|
||||||
|
struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
|
||||||
|
unsigned short int *array; /* array for GETALL & SETALL */
|
||||||
|
struct seminfo *__buf; /* buffer for IPC_INFO */
|
||||||
|
};
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
#endif /* sys/sem_buf.h */
|
56
sysdeps/unix/sysv/linux/sys/shm_buf.h
Normal file
56
sysdeps/unix/sysv/linux/sys/shm_buf.h
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||||
|
|
||||||
|
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_SHM_BUF_H
|
||||||
|
#define _SYS_SHM_BUF_H
|
||||||
|
|
||||||
|
#include <features.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
/* Flags for `shmat'. */
|
||||||
|
#define SHM_RDONLY 010000 /* attach read-only else read-write */
|
||||||
|
#define SHM_RND 020000 /* round attach address to SHMLBA */
|
||||||
|
#define SHM_REMAP 040000 /* take-over region on attach */
|
||||||
|
|
||||||
|
/* Commands for `shmctl'. */
|
||||||
|
#define SHM_LOCK 11 /* lock segment (root only) */
|
||||||
|
#define SHM_UNLOCK 12 /* unlock segment (root only) */
|
||||||
|
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
/* Data structure describing a set of semaphores. */
|
||||||
|
struct shmid_ds
|
||||||
|
{
|
||||||
|
struct ipc_perm sem_perm; /* operation permisson struct */
|
||||||
|
int shm_segsz; /* size of segment in bytes */
|
||||||
|
__time_t sem_atime; /* time of last shmat() */
|
||||||
|
__time_t sem_dtime; /* time of last shmdt() */
|
||||||
|
__time_t sem_ctime; /* time of last change by shmctl() */
|
||||||
|
__pid_t shm_cpid; /* pid of creator */
|
||||||
|
__pid_t shm_lpid; /* pid of last shmop */
|
||||||
|
unsigned short int shm_nattch; /* number of current attaches */
|
||||||
|
unsigned short int __shm_npages; /* size of segment (pages) */
|
||||||
|
unsigned long int *__shm_pages; /* array of ptrs to frames -> SHMMAX */
|
||||||
|
struct vm_area_struct *__attaches; /* descriptors for attaches */
|
||||||
|
};
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
#endif /* sys/shm_buf.h */
|
46
sysdeps/unix/sysv/linux/sys/socketcall.h
Normal file
46
sysdeps/unix/sysv/linux/sys/socketcall.h
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/* ID for functions called via socketcall system call.
|
||||||
|
Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
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_SOCKETCALL_H
|
||||||
|
#define _SYS_SOCKETCALL_H
|
||||||
|
|
||||||
|
/* Define unique numbers for the operations permitted on socket. Linux
|
||||||
|
uses a single system call for all these functions. The relevant code
|
||||||
|
file is /usr/include/linux/net.h.
|
||||||
|
We cannot use a enum here because the values are used in assembler
|
||||||
|
code. */
|
||||||
|
|
||||||
|
#define SOCKOP_socket 1
|
||||||
|
#define SOCKOP_bind 2
|
||||||
|
#define SOCKOP_connect 3
|
||||||
|
#define SOCKOP_listen 4
|
||||||
|
#define SOCKOP_accept 5
|
||||||
|
#define SOCKOP_getsockname 6
|
||||||
|
#define SOCKOP_getpeername 7
|
||||||
|
#define SOCKOP_socketpair 8
|
||||||
|
#define SOCKOP_send 9
|
||||||
|
#define SOCKOP_recv 10
|
||||||
|
#define SOCKOP_sendto 11
|
||||||
|
#define SOCKOP_recvfrom 12
|
||||||
|
#define SOCKOP_shutdown 13
|
||||||
|
#define SOCKOP_setsockopt 14
|
||||||
|
#define SOCKOP_getsockopt 15
|
||||||
|
#define SOCKOP_sendmsg 16
|
||||||
|
#define SOCKOP_recvmsg 17
|
||||||
|
|
||||||
|
#endif
|
30
sysdeps/unix/sysv/linux/sys/timex.h
Normal file
30
sysdeps/unix/sysv/linux/sys/timex.h
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* Copyright (C) 1995 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
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_TIMEX_H
|
||||||
|
#define _SYS_TIMEX_H
|
||||||
|
|
||||||
|
#include <features.h>
|
||||||
|
#include <linux/timex.h>
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
extern int __adjtimex __P ((struct timex *__ntx));
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
#endif /* sys/timex.h */
|
59
sysdeps/unix/sysv/linux/syscall.h
Normal file
59
sysdeps/unix/sysv/linux/syscall.h
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#ifndef _SYSCALL_H
|
||||||
|
#define _SYSCALL_H
|
||||||
|
|
||||||
|
/* This file should list the numbers of the system the system knows.
|
||||||
|
But instead of duplicating this we use the information available
|
||||||
|
from the kernel sources. */
|
||||||
|
#include <asm/unistd.h>
|
||||||
|
|
||||||
|
/* Among the system calls defined there are
|
||||||
|
_dup2
|
||||||
|
_mkdir
|
||||||
|
_rmdir
|
||||||
|
_readlink
|
||||||
|
_symlink
|
||||||
|
_rename
|
||||||
|
_swapon
|
||||||
|
_access
|
||||||
|
_select
|
||||||
|
_getgroups
|
||||||
|
_setgroups
|
||||||
|
_getitimer
|
||||||
|
_setitimer
|
||||||
|
_setdomainname
|
||||||
|
_getrlimit
|
||||||
|
_setrlimit
|
||||||
|
_getrusage
|
||||||
|
_getpriority
|
||||||
|
_setpriority
|
||||||
|
_truncate
|
||||||
|
_ftruncate
|
||||||
|
_setpgid
|
||||||
|
_fchmod
|
||||||
|
_fchdir
|
||||||
|
_fchown
|
||||||
|
_setregid
|
||||||
|
_setreuid
|
||||||
|
_vhangup
|
||||||
|
(This is a hack for the autoconf mechanism. Don't change a single
|
||||||
|
character, esp white spaces, unless you know what you are doing!) */
|
||||||
|
|
||||||
|
#endif
|
1
sysdeps/unix/sysv/linux/sysconf.c
Normal file
1
sysdeps/unix/sysv/linux/sysconf.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <sysdeps/posix/sysconf.c>
|
31
sysdeps/unix/sysv/linux/tcdrain.c
Normal file
31
sysdeps/unix/sysv/linux/tcdrain.c
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/* 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <termios.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
|
||||||
|
/* Wait for pending output to be written on FD. */
|
||||||
|
int
|
||||||
|
__tcdrain (fd)
|
||||||
|
int fd;
|
||||||
|
{
|
||||||
|
/* With an argument of 1, TCSBRK for output to be drain. */
|
||||||
|
return __ioctl (fd, TCSBRK, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
weak_alias (__tcdrain, tcdrain)
|
1
sysdeps/unix/sysv/linux/tcflow.c
Normal file
1
sysdeps/unix/sysv/linux/tcflow.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <sysdeps/unix/bsd/sun/sunos4/tcflow.c>
|
1
sysdeps/unix/sysv/linux/tcflush.c
Normal file
1
sysdeps/unix/sysv/linux/tcflush.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <sysdeps/unix/bsd/sun/sunos4/tcflush.c>
|
31
sysdeps/unix/sysv/linux/tcgetattr.c
Normal file
31
sysdeps/unix/sysv/linux/tcgetattr.c
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/* Copyright (C) 1992, 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., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#include <termios.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
|
||||||
|
/* Put the state of FD into *TERMIOS_P. */
|
||||||
|
int
|
||||||
|
__tcgetattr (fd, termios_p)
|
||||||
|
int fd;
|
||||||
|
struct termios *termios_p;
|
||||||
|
{
|
||||||
|
return __ioctl (fd, TCGETS, termios_p);
|
||||||
|
}
|
||||||
|
|
||||||
|
weak_alias (__tcgetattr, tcgetattr)
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user