diff options
Diffstat (limited to 'libc')
| -rw-r--r-- | libc/sysdeps/linux/ia64/bits/ipc.h | 54 | ||||
| -rw-r--r-- | libc/sysdeps/linux/ia64/bits/mman.h | 104 | ||||
| -rw-r--r-- | libc/sysdeps/linux/ia64/bits/msq.h | 69 | ||||
| -rw-r--r-- | libc/sysdeps/linux/ia64/bits/sem.h | 87 | ||||
| -rw-r--r-- | libc/sysdeps/linux/ia64/bits/shm.h | 94 | ||||
| -rw-r--r-- | libc/sysdeps/linux/ia64/bits/siginfo.h | 339 | 
6 files changed, 747 insertions, 0 deletions
| diff --git a/libc/sysdeps/linux/ia64/bits/ipc.h b/libc/sysdeps/linux/ia64/bits/ipc.h new file mode 100644 index 000000000..858c332f1 --- /dev/null +++ b/libc/sysdeps/linux/ia64/bits/ipc.h @@ -0,0 +1,54 @@ +/* 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 Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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 +   Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */ + +#ifndef _SYS_IPC_H +# error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead." +#endif + +#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.  */ + +/* 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.  */ +    unsigned short int __pad1; +    unsigned long int __unused1; +    unsigned long int __unused2; +  }; diff --git a/libc/sysdeps/linux/ia64/bits/mman.h b/libc/sysdeps/linux/ia64/bits/mman.h new file mode 100644 index 000000000..86344962a --- /dev/null +++ b/libc/sysdeps/linux/ia64/bits/mman.h @@ -0,0 +1,104 @@ +/* Definitions for POSIX memory map interface.  Linux/ia64 version. +   Copyright (C) 1997,1998,2000,2003,2005,2006 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 Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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 +   Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; 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.  */ +#define PROT_GROWSDOWN	  0x01000000	/* Extend change to start of +					   growsdown vma (mprotect only).  */ +#define PROT_GROWSUP	  0x02000000	/* Extend change to start of +					   growsup vma (mprotect only).  */ + +/* 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	  0x00100	/* Stack-like segment.  */ +# define MAP_GROWSUP	  0x00200	/* Register stack-like segment */ +# define MAP_DENYWRITE	  0x00800	/* ETXTBSY */ +# define MAP_EXECUTABLE	  0x01000	/* Mark it as an executable.  */ +# define MAP_LOCKED	  0x02000	/* Lock the mapping.  */ +# define MAP_NORESERVE	  0x04000	/* Don't check for reservations.  */ +# define MAP_POPULATE	  0x08000	/* Populate (prefault) pagetables.  */ +# define MAP_NONBLOCK	  0x10000	/* Do not block on IO.  */ +#endif + +/* Flags to `msync'.  */ +#define MS_ASYNC	  0x1		/* Sync memory asynchronously.  */ +#define MS_INVALIDATE	  0x2		/* Invalidate the caches.  */ +#define MS_SYNC		  0x4		/* Synchronous memory sync.  */ + +/* 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 +# define MREMAP_FIXED	2 +#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.  */ +# define MADV_REMOVE	 5	/* Remove these pages and resources.  */ +# define MADV_DONTFORK	 10	/* Do not inherit across fork.  */ +# define MADV_DOFORK	 11	/* Do inherit across fork.  */ +#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 diff --git a/libc/sysdeps/linux/ia64/bits/msq.h b/libc/sysdeps/linux/ia64/bits/msq.h new file mode 100644 index 000000000..cd268eea3 --- /dev/null +++ b/libc/sysdeps/linux/ia64/bits/msq.h @@ -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 Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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 +   Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; 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 */ diff --git a/libc/sysdeps/linux/ia64/bits/sem.h b/libc/sysdeps/linux/ia64/bits/sem.h new file mode 100644 index 000000000..449f1ecc4 --- /dev/null +++ b/libc/sysdeps/linux/ia64/bits/sem.h @@ -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 Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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 +   Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; 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 */ diff --git a/libc/sysdeps/linux/ia64/bits/shm.h b/libc/sysdeps/linux/ia64/bits/shm.h new file mode 100644 index 000000000..7f38f2dd7 --- /dev/null +++ b/libc/sysdeps/linux/ia64/bits/shm.h @@ -0,0 +1,94 @@ +/* Copyright (C) 2000, 2002, 2005 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 Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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 +   Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */ + +#ifndef _SYS_SHM_H +# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead." +#endif + +#include <sys/types.h> + +/* Permission flag for shmget.  */ +#define SHM_R           0400            /* or S_IRUGO from <linux/stat.h> */ +#define SHM_W           0200            /* or S_IWUGO from <linux/stat.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) */ + +/* Segment low boundary address multiple.  */ +#define SHMLBA		(1024 * 1024) + +/* Type to count number of attaches.  */ +typedef unsigned long int shmatt_t; + +/* Data structure describing a set of semaphores.  */ +struct shmid_ds +  { +    struct ipc_perm shm_perm;		/* operation permission struct */ +    size_t shm_segsz;			/* size of segment in bytes */ +    __time_t shm_atime;			/* time of last shmat() */ +    __time_t shm_dtime;			/* time of last shmdt() */ +    __time_t shm_ctime;			/* time of last change by shmctl() */ +    __pid_t shm_cpid;			/* pid of creator */ +    __pid_t shm_lpid;			/* pid of last shmop */ +    shmatt_t shm_nattch;		/* number of current attaches */ +    unsigned long int __unused1; +    unsigned long int __unused2; +  }; + +#ifdef __USE_MISC + +/* ipcs ctl commands */ +# define SHM_STAT 	13 +# define SHM_INFO 	14 + +/* shm_mode upper byte flags */ +# define SHM_DEST	01000	/* segment will be destroyed on last detach */ +# define SHM_LOCKED	02000   /* segment will not be swapped */ +# define SHM_HUGETLB	04000	/* segment is mapped via hugetlb */ +# define SHM_NORESERVE	010000	/* don't check for reservations */ + +struct	shminfo +  { +    unsigned long int shmmax; +    unsigned long int shmmin; +    unsigned long int shmmni; +    unsigned long int shmseg; +    unsigned long int shmall; +    unsigned long int __unused1; +    unsigned long int __unused2; +    unsigned long int __unused3; +    unsigned long int __unused4; +  }; + +struct shm_info +  { +    int used_ids; +    unsigned long int shm_tot;	/* total allocated shm */ +    unsigned long int shm_rss;	/* total resident shm */ +    unsigned long int shm_swp;	/* total swapped shm */ +    unsigned long int swap_attempts; +    unsigned long int swap_successes; +  }; + +#endif /* __USE_MISC */ diff --git a/libc/sysdeps/linux/ia64/bits/siginfo.h b/libc/sysdeps/linux/ia64/bits/siginfo.h new file mode 100644 index 000000000..66310c65b --- /dev/null +++ b/libc/sysdeps/linux/ia64/bits/siginfo.h @@ -0,0 +1,339 @@ +/* siginfo_t, sigevent and constants.  Linux/ia64 version. +   Copyright (C) 2000, 2001, 2002, 2003, 2004 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 Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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 +   Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; 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 \ +    && !defined __need_sigevent_t +# error "Never include this file directly.  Use <signal.h> instead" +#endif + +#if (!defined __have_sigval_t \ +     && (defined _SIGNAL_H || defined __need_siginfo_t \ +	 || defined __need_sigevent_t)) +# define __have_sigval_t	1 + +/* Type for data associated with a signal.  */ +typedef union sigval +  { +    int sival_int; +    void *sival_ptr; +  } sigval_t; +#endif + +#if (!defined __have_siginfo_t \ +     && (defined _SIGNAL_H || defined __need_siginfo_t)) +# define __have_siginfo_t	1 + +# define __SI_MAX_SIZE     128 +# define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 4) + +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.  */ +    int __pad0;			/* Explicit padding.  */ + +    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 +	  { +	    int si_tid;		/* Timer ID.  */ +	    int si_overrun;	/* Overrun count.  */ +	    sigval_t si_sigval;	/* Signal value.  */ +	  } _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; +	    unsigned int _si_flags; +	    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_timerid	_sifields._timer.si_tid +# define si_overrun	_sifields._timer.si_overrun +# 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_segvflags	_sifields._sigfault._si_flags +#  define si_isr	_sifields._sigfault._si_isr +# endif + +/* Values for `si_code'.  Positive values are reserved for kernel-generated +   signals.  */ +enum +{ +  SI_ASYNCNL = -60,		/* Sent by asynch name lookup completion.  */ +# define SI_ASYNCNL	SI_ASYNCNL +  SI_TKILL = -6,		/* Sent by tkill.  */ +# define SI_TKILL	SI_TKILL +  SI_SIGIO,			/* 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_KERNEL = 0x80		/* Send by kernel.  */ +#define SI_KERNEL	SI_KERNEL +}; + + +/* `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 +  ILL_BADIADDR			/* Unimplemented instruction address. */ +# define ILL_BADIADDR	ILL_BADIADDR + +# 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 +# ifdef __USE_GNU +  , SEGV_PSTKOVF		/* Paragraph stack overflow. */ +# define SEGV_PSTKOVF	SEGV_PSTKOVF +# endif +}; + +/* `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 __need_sigevent_t) \ +    && !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)) - 4) + +typedef struct sigevent +  { +    sigval_t sigev_value; +    int sigev_signo; +    int sigev_notify; + +    union +      { +	int _pad[__SIGEV_PAD_SIZE]; + +	struct +	  { +	    void (*_function) (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 + +  SIGEV_THREAD_ID = 4		/* Send signal to specific thread.  */ +#define SIGEV_THREAD_ID	SIGEV_THREAD_ID +}; + +#endif	/* have _SIGNAL_H.  */ | 
