mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
Update.
2000-07-13 Jes Sorensen <jes@linuxcare.com> * sysdeps/unix/sysv/linux/ia64/clone.S: New file. * sysdeps/unix/sysv/linux/ia64/fork.c: New file. 2000-06-05 David Mosberger <davidm@hpl.hp.com> * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: New file based on sysdeps/unix/sysv/linux/bits/siginfo.h. Change type of si_band from "int" to "long". (si_imm) [USE_GNU]: Define (si_isr) [USE_GNU]: Ditto. (ILL_BREAK) [USE_GNU]: Ditto. (FPE_DECOVF) [USE_GNU]: Ditto. (FPE_DECDIV) [USE_GNU]: Ditto. (FPE_DECERR) [USE_GNU]: Ditto. (FPE_INVASC) [USE_GNU]: Ditto. (FPE_INVDEC) [USE_GNU]: Ditto. (TRAP_BRANCH) [USE_GNU]: Ditto. (TRAP_HWBKPT) [USE_GNU]: Ditto. 2000-07-06 Jes Sorensen <jes@linuxcare.com> * sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Do not include bits/sigcontext as struct mcontext does not depend on it. * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: New file. 2000-07-04 Jes Sorensen <jes@linuxcare.com> * sysdeps/unix/sysv/linux/ia64/shmctl.c: Removed. 2000-07-04 David Mosberger-Tang <davidm@hpl.hp.com> * sysdeps/unix/sysv/linux/ia64/bits/msq.h: New file. 2000-06-22 Jes Sorensen <jes@linuxcare.com> * sysdeps/unix/sysv/linux/ia64/bits/mman.h: New file. * intl/translit.po: New file.
This commit is contained in:
parent
4ab8e75a46
commit
a9a4127ea6
41
ChangeLog
41
ChangeLog
@ -1,3 +1,43 @@
|
||||
2000-07-13 Jes Sorensen <jes@linuxcare.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/clone.S: New file.
|
||||
* sysdeps/unix/sysv/linux/ia64/fork.c: New file.
|
||||
|
||||
2000-06-05 David Mosberger <davidm@hpl.hp.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: New file
|
||||
based on sysdeps/unix/sysv/linux/bits/siginfo.h.
|
||||
Change type of si_band from "int" to "long".
|
||||
(si_imm) [USE_GNU]: Define
|
||||
(si_isr) [USE_GNU]: Ditto.
|
||||
(ILL_BREAK) [USE_GNU]: Ditto.
|
||||
(FPE_DECOVF) [USE_GNU]: Ditto.
|
||||
(FPE_DECDIV) [USE_GNU]: Ditto.
|
||||
(FPE_DECERR) [USE_GNU]: Ditto.
|
||||
(FPE_INVASC) [USE_GNU]: Ditto.
|
||||
(FPE_INVDEC) [USE_GNU]: Ditto.
|
||||
(TRAP_BRANCH) [USE_GNU]: Ditto.
|
||||
(TRAP_HWBKPT) [USE_GNU]: Ditto.
|
||||
|
||||
2000-07-06 Jes Sorensen <jes@linuxcare.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Do not include
|
||||
bits/sigcontext as struct mcontext does not depend on it.
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: New file.
|
||||
|
||||
2000-07-04 Jes Sorensen <jes@linuxcare.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/shmctl.c: Removed.
|
||||
|
||||
2000-07-04 David Mosberger-Tang <davidm@hpl.hp.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/msq.h: New file.
|
||||
|
||||
2000-06-22 Jes Sorensen <jes@linuxcare.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/bits/mman.h: New file.
|
||||
|
||||
2000-07-15 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* intl/Makefile (test-srcs): Add tst-translit.
|
||||
@ -5,6 +45,7 @@
|
||||
Add rules to build and run tst-translit.
|
||||
* intl/tst-translit.c: New file.
|
||||
* intl/tst-translit.sh: New file.
|
||||
* intl/translit.po: New file.
|
||||
|
||||
2000-07-14 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
|
9
intl/translit.po
Normal file
9
intl/translit.po
Normal file
@ -0,0 +1,9 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||
|
||||
msgid "test"
|
||||
msgstr "äöüÄÜÖß"
|
||||
|
||||
msgid "onemore"
|
||||
msgstr "Ässdf"
|
94
sysdeps/unix/sysv/linux/ia64/bits/mman.h
Normal file
94
sysdeps/unix/sysv/linux/ia64/bits/mman.h
Normal file
@ -0,0 +1,94 @@
|
||||
/* Definitions for POSIX memory map interface. Linux/ia64 version.
|
||||
Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _SYS_MMAN_H
|
||||
# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
|
||||
#endif
|
||||
|
||||
/* The following definitions basically come from the kernel headers.
|
||||
But the kernel header is not namespace clean. */
|
||||
|
||||
|
||||
/* 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_READ 0x1 /* Page can be read. */
|
||||
#define PROT_WRITE 0x2 /* Page can be written. */
|
||||
#define PROT_EXEC 0x4 /* Page can be executed. */
|
||||
#define PROT_NONE 0x0 /* Page can not be accessed. */
|
||||
|
||||
/* Sharing types (must choose one and only one of these). */
|
||||
#define MAP_SHARED 0x01 /* Share changes. */
|
||||
#define MAP_PRIVATE 0x02 /* Changes are private. */
|
||||
#ifdef __USE_MISC
|
||||
# define MAP_TYPE 0x0f /* Mask for type of mapping. */
|
||||
#endif
|
||||
|
||||
/* Other flags. */
|
||||
#define MAP_FIXED 0x10 /* Interpret addr exactly. */
|
||||
#ifdef __USE_MISC
|
||||
# define MAP_FILE 0
|
||||
# define MAP_ANONYMOUS 0x20 /* Don't use a file. */
|
||||
# define MAP_ANON MAP_ANONYMOUS
|
||||
#endif
|
||||
|
||||
/* These are Linux-specific. */
|
||||
#ifdef __USE_MISC
|
||||
# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
|
||||
# define MAP_GROWSUP 0x0200 /* Register stack-like segment */
|
||||
# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
|
||||
# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
|
||||
# define MAP_LOCKED 0x2000 /* Lock the mapping. */
|
||||
# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
|
||||
#endif
|
||||
|
||||
/* Flags to `msync'. */
|
||||
#define MS_ASYNC 0x1 /* Sync memory asynchronously. */
|
||||
#define MS_SYNC 0x2 /* Synchronous memory sync. */
|
||||
#define MS_INVALIDATE 0x4 /* Invalidate the caches. */
|
||||
|
||||
/* Flags for `mlockall'. */
|
||||
#define MCL_CURRENT 0x1 /* Lock all currently mapped pages. */
|
||||
#define MCL_FUTURE 0x2 /* Lock all additions to address
|
||||
space. */
|
||||
|
||||
/* Flags for `mremap'. */
|
||||
#ifdef __USE_GNU
|
||||
# define MREMAP_MAYMOVE 1
|
||||
#endif
|
||||
|
||||
/* Advice to `madvise'. */
|
||||
#ifdef __USE_BSD
|
||||
# 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. */
|
||||
#endif
|
||||
|
||||
/* The POSIX people had to invent similar names for the same things. */
|
||||
#ifdef __USE_XOPEN2K
|
||||
# define POSIX_MADV_NORMAL 0 /* No further special treatment. */
|
||||
# define POSIX_MADV_RANDOM 1 /* Expect random page references. */
|
||||
# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */
|
||||
# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */
|
||||
# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */
|
||||
#endif
|
69
sysdeps/unix/sysv/linux/ia64/bits/msq.h
Normal file
69
sysdeps/unix/sysv/linux/ia64/bits/msq.h
Normal file
@ -0,0 +1,69 @@
|
||||
/* Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contribute by David Mosberger-Tang <davidm@hpl.hp.com>
|
||||
|
||||
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_MSG_H
|
||||
#error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
|
||||
#endif
|
||||
|
||||
#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 */
|
||||
|
||||
|
||||
/* 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 */
|
||||
__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 */
|
||||
unsigned long int __msg_cbytes; /* current number of bytes on queue */
|
||||
unsigned long int msg_qnum; /* number of messages currently on queue */
|
||||
unsigned long 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() */
|
||||
unsigned long int __unused1;
|
||||
unsigned long int __unused2;
|
||||
};
|
||||
|
||||
#ifdef __USE_MISC
|
||||
|
||||
# define msg_cbytes __msg_cbytes
|
||||
|
||||
/* ipcs ctl commands */
|
||||
# define MSG_STAT 11
|
||||
# define MSG_INFO 12
|
||||
|
||||
/* buffer for msgctl calls IPC_INFO, MSG_INFO */
|
||||
struct msginfo
|
||||
{
|
||||
int msgpool;
|
||||
int msgmap;
|
||||
int msgmax;
|
||||
int msgmnb;
|
||||
int msgmni;
|
||||
int msgssz;
|
||||
int msgtql;
|
||||
unsigned short int msgseg;
|
||||
};
|
||||
|
||||
#endif /* __USE_MISC */
|
87
sysdeps/unix/sysv/linux/ia64/bits/sem.h
Normal file
87
sysdeps/unix/sysv/linux/ia64/bits/sem.h
Normal file
@ -0,0 +1,87 @@
|
||||
/* Copyright (C) 2000
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
|
||||
|
||||
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_H
|
||||
# error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
|
||||
#endif
|
||||
|
||||
#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 */
|
||||
|
||||
|
||||
/* Data structure describing a set of semaphores. */
|
||||
struct semid_ds
|
||||
{
|
||||
struct ipc_perm sem_perm; /* operation permission struct */
|
||||
__time_t sem_otime; /* last semop() time */
|
||||
__time_t sem_ctime; /* last time changed by semctl() */
|
||||
unsigned long int sem_nsems; /* number of semaphores in set */
|
||||
unsigned long int __unused1;
|
||||
unsigned long int __unused2;
|
||||
};
|
||||
|
||||
/* The user should define a union like the following to use it for arguments
|
||||
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
|
||||
};
|
||||
|
||||
Previous versions of this file used to define this union but this is
|
||||
incorrect. One can test the macro _SEM_SEMUN_UNDEFINED to see whether
|
||||
one must define the union or not. */
|
||||
#define _SEM_SEMUN_UNDEFINED 1
|
||||
|
||||
#ifdef __USE_MISC
|
||||
|
||||
/* ipcs ctl cmds */
|
||||
# define SEM_STAT 18
|
||||
# define SEM_INFO 19
|
||||
|
||||
struct seminfo
|
||||
{
|
||||
int semmap;
|
||||
int semmni;
|
||||
int semmns;
|
||||
int semmnu;
|
||||
int semmsl;
|
||||
int semopm;
|
||||
int semume;
|
||||
int semusz;
|
||||
int semvmx;
|
||||
int semaem;
|
||||
};
|
||||
|
||||
#endif /* __USE_MISC */
|
58
sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h
Normal file
58
sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h
Normal file
@ -0,0 +1,58 @@
|
||||
/* Copyright (C) 1996, 1997, 1998,2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Jes Sorensen <jes@linuxcare.com>, July 2000
|
||||
|
||||
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. */
|
||||
|
||||
#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
|
||||
# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
|
||||
#endif
|
||||
|
||||
#ifndef sigcontext_struct
|
||||
/* Kernel headers before 2.1.1 define a struct sigcontext_struct, but
|
||||
we need sigcontext. */
|
||||
# define sigcontext_struct sigcontext
|
||||
#endif
|
||||
|
||||
#include <asm/fpu.h>
|
||||
#include <bits/sigstack.h>
|
||||
|
||||
struct sigcontext
|
||||
{
|
||||
unsigned long int sc_flags; /* see manifest constants above */
|
||||
unsigned long int sc_nat; /* bit i == 1 iff scratch reg gr[i] is a NaT */
|
||||
stack_t sc_stack; /* previously active stack */
|
||||
|
||||
unsigned long int sc_ip; /* instruction pointer */
|
||||
unsigned long int sc_cfm; /* current frame marker */
|
||||
unsigned long int sc_um; /* user mask bits */
|
||||
unsigned long int sc_ar_rsc; /* register stack configuration register */
|
||||
unsigned long int sc_ar_bsp; /* backing store pointer */
|
||||
unsigned long int sc_ar_rnat; /* RSE NaT collection register */
|
||||
unsigned long int sc_ar_ccv; /* compare & exchange compare value register */
|
||||
unsigned long int sc_ar_unat; /* ar.unat of interrupted context */
|
||||
unsigned long int sc_ar_fpsr; /* floating-point status register */
|
||||
unsigned long int sc_ar_pfs; /* previous function state */
|
||||
unsigned long int sc_ar_lc; /* loop count register */
|
||||
unsigned long int sc_pr; /* predicate registers */
|
||||
unsigned long int sc_br[8]; /* branch registers */
|
||||
unsigned long int sc_gr[32]; /* general registers (static partition) */
|
||||
struct ia64_fpreg sc_fr[128]; /* floating-point registers */
|
||||
|
||||
/* sc_mask is actually an sigset_t but we don't want to
|
||||
* include the kernel headers here. */
|
||||
unsigned long int sc_mask; /* signal mask to restore after handler returns */
|
||||
};
|
311
sysdeps/unix/sysv/linux/ia64/bits/siginfo.h
Normal file
311
sysdeps/unix/sysv/linux/ia64/bits/siginfo.h
Normal file
@ -0,0 +1,311 @@
|
||||
/* siginfo_t, sigevent and constants. Linux/ia64 version.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by David Mosberger-Tang <davidm@hpl.hp.com.
|
||||
|
||||
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. */
|
||||
|
||||
#if !defined _SIGNAL_H && !defined __need_siginfo_t
|
||||
# error "Never include this file directly. Use <signal.h> instead"
|
||||
#endif
|
||||
|
||||
#if (!defined __have_siginfo_t \
|
||||
&& (defined _SIGNAL_H || defined __need_siginfo_t))
|
||||
# define __have_siginfo_t 1
|
||||
|
||||
/* Type for data associated with a signal. */
|
||||
typedef union sigval
|
||||
{
|
||||
int sival_int;
|
||||
void *sival_ptr;
|
||||
} sigval_t;
|
||||
|
||||
# define __SI_MAX_SIZE 128
|
||||
# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
|
||||
|
||||
typedef struct siginfo
|
||||
{
|
||||
int si_signo; /* Signal number. */
|
||||
int si_errno; /* If non-zero, an errno value associated with
|
||||
this signal, as defined in <errno.h>. */
|
||||
int si_code; /* Signal code. */
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SI_PAD_SIZE];
|
||||
|
||||
/* kill(). */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
} _kill;
|
||||
|
||||
/* POSIX.1b timers. */
|
||||
struct
|
||||
{
|
||||
unsigned int _timer1;
|
||||
unsigned int _timer2;
|
||||
} _timer;
|
||||
|
||||
/* POSIX.1b signals. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Sending process ID. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
sigval_t si_sigval; /* Signal value. */
|
||||
} _rt;
|
||||
|
||||
/* SIGCHLD. */
|
||||
struct
|
||||
{
|
||||
__pid_t si_pid; /* Which child. */
|
||||
__uid_t si_uid; /* Real user ID of sending process. */
|
||||
int si_status; /* Exit value or signal. */
|
||||
__clock_t si_utime;
|
||||
__clock_t si_stime;
|
||||
} _sigchld;
|
||||
|
||||
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */
|
||||
struct
|
||||
{
|
||||
void *si_addr; /* Faulting insn/memory ref. */
|
||||
int _si_imm;
|
||||
int _si_pad0;
|
||||
unsigned long int _si_isr;
|
||||
} _sigfault;
|
||||
|
||||
/* SIGPOLL. */
|
||||
struct
|
||||
{
|
||||
long int si_band; /* Band event for SIGPOLL. */
|
||||
int si_fd;
|
||||
} _sigpoll;
|
||||
} _sifields;
|
||||
} siginfo_t;
|
||||
|
||||
|
||||
/* X/Open requires some more fields with fixed names. */
|
||||
# define si_pid _sifields._kill.si_pid
|
||||
# define si_uid _sifields._kill.si_uid
|
||||
# define si_status _sifields._sigchld.si_status
|
||||
# define si_utime _sifields._sigchld.si_utime
|
||||
# define si_stime _sifields._sigchld.si_stime
|
||||
# define si_value _sifields._rt.si_sigval
|
||||
# define si_int _sifields._rt.si_sigval.sival_int
|
||||
# define si_ptr _sifields._rt.si_sigval.sival_ptr
|
||||
# define si_addr _sifields._sigfault.si_addr
|
||||
# define si_band _sifields._sigpoll.si_band
|
||||
# define si_fd _sifields._sigpoll.si_fd
|
||||
|
||||
#ifdef __USE_GNU
|
||||
# define si_imm _sifields._sigfault._si_imm
|
||||
# define si_isr _sifields._sigfault._si_isr
|
||||
#endif
|
||||
|
||||
/* Values for `si_code'. Positive values are reserved for kernel-generated
|
||||
signals. */
|
||||
enum
|
||||
{
|
||||
SI_SIGIO = -5, /* Sent by queued SIGIO. */
|
||||
# define SI_SIGIO SI_SIGIO
|
||||
SI_ASYNCIO, /* Sent by AIO completion. */
|
||||
# define SI_ASYNCIO SI_ASYNCIO
|
||||
SI_MESGQ, /* Sent by real time mesq state change. */
|
||||
# define SI_MESGQ SI_MESGQ
|
||||
SI_TIMER, /* Sent by timer expiration. */
|
||||
# define SI_TIMER SI_TIMER
|
||||
SI_QUEUE, /* Sent by sigqueue. */
|
||||
# define SI_QUEUE SI_QUEUE
|
||||
SI_USER /* Sent by kill, sigsend, raise. */
|
||||
# define SI_USER SI_USER
|
||||
};
|
||||
|
||||
|
||||
/* `si_code' values for SIGILL signal. */
|
||||
enum
|
||||
{
|
||||
ILL_ILLOPC = 1, /* Illegal opcode. */
|
||||
# define ILL_ILLOPC ILL_ILLOPC
|
||||
ILL_ILLOPN, /* Illegal operand. */
|
||||
# define ILL_ILLOPN ILL_ILLOPN
|
||||
ILL_ILLADR, /* Illegal addressing mode. */
|
||||
# define ILL_ILLADR ILL_ILLADR
|
||||
ILL_ILLTRP, /* Illegal trap. */
|
||||
# define ILL_ILLTRP ILL_ILLTRP
|
||||
ILL_PRVOPC, /* Privileged opcode. */
|
||||
# define ILL_PRVOPC ILL_PRVOPC
|
||||
ILL_PRVREG, /* Privileged register. */
|
||||
# define ILL_PRVREG ILL_PRVREG
|
||||
ILL_COPROC, /* Coprocessor error. */
|
||||
# define ILL_COPROC ILL_COPROC
|
||||
ILL_BADSTK /* Internal stack error. */
|
||||
# define ILL_BADSTK ILL_BADSTK
|
||||
|
||||
# ifdef __USE_GNU
|
||||
, ILL_BREAK
|
||||
# define ILL_BREAK __ILL_BREAK
|
||||
# endif
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGFPE signal. */
|
||||
enum
|
||||
{
|
||||
FPE_INTDIV = 1, /* Integer divide by zero. */
|
||||
# define FPE_INTDIV FPE_INTDIV
|
||||
FPE_INTOVF, /* Integer overflow. */
|
||||
# define FPE_INTOVF FPE_INTOVF
|
||||
FPE_FLTDIV, /* Floating point divide by zero. */
|
||||
# define FPE_FLTDIV FPE_FLTDIV
|
||||
FPE_FLTOVF, /* Floating point overflow. */
|
||||
# define FPE_FLTOVF FPE_FLTOVF
|
||||
FPE_FLTUND, /* Floating point underflow. */
|
||||
# define FPE_FLTUND FPE_FLTUND
|
||||
FPE_FLTRES, /* Floating point inexact result. */
|
||||
# define FPE_FLTRES FPE_FLTRES
|
||||
FPE_FLTINV, /* Floating point invalid operation. */
|
||||
# define FPE_FLTINV FPE_FLTINV
|
||||
FPE_FLTSUB /* Subscript out of range. */
|
||||
# define FPE_FLTSUB FPE_FLTSUB
|
||||
# ifdef __USE_GNU
|
||||
, FPE_DECOVF
|
||||
# define FPE_DECOVF __FPE_DECOVF
|
||||
, FPE_DECDIV
|
||||
# define FPE_DECDIV __FPE_DECDIV
|
||||
, FPE_DECERR
|
||||
# define FPE_DECERR __FPE_DECERR
|
||||
, FPE_INVASC
|
||||
# define FPE_INVASC __FPE_INVASC
|
||||
, FPE_INVDEC
|
||||
# define FPE_INVDEC __FPE_INVDEC
|
||||
# endif
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGSEGV signal. */
|
||||
enum
|
||||
{
|
||||
SEGV_MAPERR = 1, /* Address not mapped to object. */
|
||||
# define SEGV_MAPERR SEGV_MAPERR
|
||||
SEGV_ACCERR /* Invalid permissions for mapped object. */
|
||||
# define SEGV_ACCERR SEGV_ACCERR
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGBUS signal. */
|
||||
enum
|
||||
{
|
||||
BUS_ADRALN = 1, /* Invalid address alignment. */
|
||||
# define BUS_ADRALN BUS_ADRALN
|
||||
BUS_ADRERR, /* Non-existant physical address. */
|
||||
# define BUS_ADRERR BUS_ADRERR
|
||||
BUS_OBJERR /* Object specific hardware error. */
|
||||
# define BUS_OBJERR BUS_OBJERR
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGTRAP signal. */
|
||||
enum
|
||||
{
|
||||
TRAP_BRKPT = 1, /* Process breakpoint. */
|
||||
# define TRAP_BRKPT TRAP_BRKPT
|
||||
TRAP_TRACE /* Process trace trap. */
|
||||
# define TRAP_TRACE TRAP_TRACE
|
||||
|
||||
# ifdef __USE_GNU
|
||||
, TRAP_BRANCH
|
||||
# define TRAP_BRANCH TRAP_BRANCH
|
||||
, TRAP_HWBKPT
|
||||
# define TRAP_HWBKPT TRAP_HWBKPT
|
||||
# endif
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGCHLD signal. */
|
||||
enum
|
||||
{
|
||||
CLD_EXITED = 1, /* Child has exited. */
|
||||
# define CLD_EXITED CLD_EXITED
|
||||
CLD_KILLED, /* Child was killed. */
|
||||
# define CLD_KILLED CLD_KILLED
|
||||
CLD_DUMPED, /* Child terminated abnormally. */
|
||||
# define CLD_DUMPED CLD_DUMPED
|
||||
CLD_TRAPPED, /* Traced child has trapped. */
|
||||
# define CLD_TRAPPED CLD_TRAPPED
|
||||
CLD_STOPPED, /* Child has stopped. */
|
||||
# define CLD_STOPPED CLD_STOPPED
|
||||
CLD_CONTINUED /* Stopped child has continued. */
|
||||
# define CLD_CONTINUED CLD_CONTINUED
|
||||
};
|
||||
|
||||
/* `si_code' values for SIGPOLL signal. */
|
||||
enum
|
||||
{
|
||||
POLL_IN = 1, /* Data input available. */
|
||||
# define POLL_IN POLL_IN
|
||||
POLL_OUT, /* Output buffers available. */
|
||||
# define POLL_OUT POLL_OUT
|
||||
POLL_MSG, /* Input message available. */
|
||||
# define POLL_MSG POLL_MSG
|
||||
POLL_ERR, /* I/O error. */
|
||||
# define POLL_ERR POLL_ERR
|
||||
POLL_PRI, /* High priority input available. */
|
||||
# define POLL_PRI POLL_PRI
|
||||
POLL_HUP /* Device disconnected. */
|
||||
# define POLL_HUP POLL_HUP
|
||||
};
|
||||
|
||||
# undef __need_siginfo_t
|
||||
#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */
|
||||
|
||||
|
||||
#if defined _SIGNAL_H && !defined __have_sigevent_t
|
||||
# define __have_sigevent_t 1
|
||||
|
||||
/* Structure to transport application-defined values with signals. */
|
||||
# define __SIGEV_MAX_SIZE 64
|
||||
# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
|
||||
|
||||
typedef struct sigevent
|
||||
{
|
||||
sigval_t sigev_value;
|
||||
int sigev_signo;
|
||||
int sigev_notify;
|
||||
|
||||
union
|
||||
{
|
||||
int _pad[__SIGEV_PAD_SIZE];
|
||||
|
||||
struct
|
||||
{
|
||||
void (*_function) __PMT ((sigval_t)); /* Function to start. */
|
||||
void *_attribute; /* Really pthread_attr_t. */
|
||||
} _sigev_thread;
|
||||
} _sigev_un;
|
||||
} sigevent_t;
|
||||
|
||||
/* POSIX names to access some of the members. */
|
||||
# define sigev_notify_function _sigev_un._sigev_thread._function
|
||||
# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
|
||||
|
||||
/* `sigev_notify' values. */
|
||||
enum
|
||||
{
|
||||
SIGEV_SIGNAL = 0, /* Notify via signal. */
|
||||
# define SIGEV_SIGNAL SIGEV_SIGNAL
|
||||
SIGEV_NONE, /* Other notification: meaningless. */
|
||||
# define SIGEV_NONE SIGEV_NONE
|
||||
SIGEV_THREAD /* Deliver via thread creation. */
|
||||
# define SIGEV_THREAD SIGEV_THREAD
|
||||
};
|
||||
|
||||
#endif /* have _SIGNAL_H. */
|
75
sysdeps/unix/sysv/linux/ia64/clone.S
Normal file
75
sysdeps/unix/sysv/linux/ia64/clone.S
Normal file
@ -0,0 +1,75 @@
|
||||
/* Copyright (C) 1999,2000 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. */
|
||||
|
||||
/* clone is even more special than fork as it mucks with stacks
|
||||
and invokes a function in the right context after its all over. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
|
||||
|
||||
/*
|
||||
* Used for both clone and fork system calls. Note that if fn is NULL
|
||||
* then clone was called from fork.
|
||||
*/
|
||||
|
||||
ENTRY(__clone)
|
||||
add r2 = -16, r33 // save space for fn and arg
|
||||
cmp.ne p6,p0 = 0,r33
|
||||
;;
|
||||
(p6) add r33 = -16, r33
|
||||
add r12 = -16, r12
|
||||
;;
|
||||
(p6) st8 [r2] = r32, 8 // save fn for child
|
||||
st8 [r12] = r32 // save fn for parent
|
||||
;;
|
||||
(p6) st8 [r2] = r35 // save arg for child
|
||||
mov r32 = r34 // put flags in out0
|
||||
DO_CALL (SYS_ify (clone))
|
||||
1:
|
||||
ld8 r33 = [r12], 8 // recover fn
|
||||
;;
|
||||
ld8 r32 = [r12], 8 // recover arg
|
||||
|
||||
cmp.eq p6,p0=-1,r10
|
||||
(p6) br.cond.spnt.many __syscall_error // handle error
|
||||
|
||||
cmp.ne p7,p0=0,r8
|
||||
(p7) ret // parent process, just return
|
||||
|
||||
cmp.eq p8,p0=0,r33
|
||||
(p8) ret // fork call, return
|
||||
|
||||
alloc loc0 = ar.pfs,2,2,2,0
|
||||
;;
|
||||
ld8 r2 = [in1], 8 // get address of fn
|
||||
mov out0 = in0
|
||||
mov loc1 = gp // save gp across indirect call
|
||||
;;
|
||||
ld8 gp = [in1] // set new gp
|
||||
mov b6 = r2
|
||||
br.call.sptk b0 = b6 // call thread routine
|
||||
;;
|
||||
|
||||
mov ar.pfs = loc0
|
||||
mov gp = loc1
|
||||
mov r32 = r8 // exit value
|
||||
br.call.sptk b0 = _exit // we're out of here
|
||||
|
||||
PSEUDO_END(__clone)
|
||||
|
||||
weak_alias (__clone, clone)
|
@ -1,6 +1,7 @@
|
||||
/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
|
||||
Written by Andreas Schwab, <schwab@issan.informatik.uni-dortmund.de>,
|
||||
December 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
|
||||
@ -17,15 +18,16 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/shm.h>
|
||||
#include <ipc_priv.h>
|
||||
#include <unistd.h>
|
||||
#include <asm/signal.h>
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <sys/syscall.h>
|
||||
extern int __clone (int (*fn)(void *), void *ksp, unsigned long int flags,
|
||||
void *arg);
|
||||
|
||||
int
|
||||
shmctl (int shmid, int cmd, struct shmid_ds *buf)
|
||||
__fork (void)
|
||||
{
|
||||
return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, buf);
|
||||
return __clone (NULL, NULL, SIGCHLD, 0);
|
||||
}
|
||||
|
||||
weak_alias (__fork, fork)
|
@ -22,7 +22,7 @@
|
||||
#include <features.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include <bits/sigcontext.h>
|
||||
#include <bits/sigstack.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user