patch-2.3.48 linux/include/asm-mips/siginfo.h

Next file: linux/include/asm-mips/signal.h
Previous file: linux/include/asm-mips/sigcontext.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.47/linux/include/asm-mips/siginfo.h linux/include/asm-mips/siginfo.h
@@ -1,30 +1,33 @@
-/* $Id: siginfo.h,v 1.4 1998/08/28 16:23:06 ralf Exp $
+/* $Id: siginfo.h,v 1.6 2000/02/18 00:24:48 ralf Exp $
  *
  * This file is subject to the terms and conditions of the GNU General Public
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
- * Copyright (C) 1998 by Ralf Baechle
+ * Copyright (C) 1998, 1999 by Ralf Baechle
  */
-#ifndef __ASM_MIPS_SIGINFO_H
-#define __ASM_MIPS_SIGINFO_H
+#ifndef _ASM_SIGINFO_H
+#define _ASM_SIGINFO_H
 
 #include <linux/types.h>
 
-/* This structure matches OSF/1 for binary compatibility. */
+/* This structure matches IRIX 32/n32 ABIs for binary compatibility. */
 
 typedef union sigval {
 	int sival_int;
 	void *sival_ptr;
 } sigval_t;
 
+/* This structure matches IRIX 32/n32 ABIs for binary compatibility but
+   has Linux extensions.  */
+
 #define SI_MAX_SIZE	128
-#define SI_PAD_SIZE	((SI_MAX_SIZE/sizeof(int)) - 4)
+#define SI_PAD_SIZE	((SI_MAX_SIZE/sizeof(int)) - 3)
 
 typedef struct siginfo {
 	int si_signo;
-	int si_errno;
 	int si_code;
+	int si_errno;
 
 	union {
 		int _pad[SI_PAD_SIZE];
@@ -35,38 +38,47 @@
 			uid_t _uid;		/* sender's uid */
 		} _kill;
 
-		/* POSIX.1b timers */
-		struct {
-			unsigned int _timer1;
-			unsigned int _timer2;
-		} _timer;
-
-		/* POSIX.1b signals */
-		struct {
-			pid_t _pid;		/* sender's pid */
-			uid_t _uid;		/* sender's uid */
-			sigval_t _sigval;
-		} _rt;
-
 		/* SIGCHLD */
 		struct {
 			pid_t _pid;		/* which child */
 			uid_t _uid;		/* sender's uid */
-			int _status;		/* exit code */
 			clock_t _utime;
+			int _status;		/* exit code */
 			clock_t _stime;
 		} _sigchld;
 
+		/* IRIX SIGCHLD */
+		struct {
+			pid_t _pid;		/* which child */
+			clock_t _utime;
+			int _status;		/* exit code */
+			clock_t _stime;
+		} _irix_sigchld;
+
 		/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
 		struct {
 			void *_addr; /* faulting insn/memory ref. */
 		} _sigfault;
 
-		/* SIGPOLL */
+		/* SIGPOLL, SIGXFSZ (To do ...)  */
 		struct {
 			int _band;	/* POLL_IN, POLL_OUT, POLL_MSG */
 			int _fd;
 		} _sigpoll;
+
+		/* POSIX.1b timers */
+		struct {
+			unsigned int _timer1;
+			unsigned int _timer2;
+		} _timer;
+
+		/* POSIX.1b signals */
+		struct {
+			pid_t _pid;		/* sender's pid */
+			uid_t _uid;		/* sender's uid */
+			sigval_t _sigval;
+		} _rt;
+
 	} _sifields;
 } siginfo_t;
 
@@ -87,7 +99,7 @@
 
 /*
  * si_code values
- * Digital reserves positive values for kernel-generated signals.
+ * Again these have been choosen to be IRIX compatible.
  */
 #define SI_USER		0	/* sent by kill, sigsend, raise */
 #define SI_KERNEL	0x80	/* sent by the kernel from somewhere */
@@ -165,7 +177,7 @@
 #define POLL_IN		1	/* data input available */
 #define POLL_OUT	2	/* output buffers available */
 #define POLL_MSG	3	/* input message available */
-#define POLL_ERR	4	/* i/o error */
+#define POLL_ERR	4	/* I/O error */
 #define POLL_PRI	5	/* high priority input available */
 #define POLL_HUP	6	/* device disconnected */
 #define NSIGPOLL	6
@@ -178,17 +190,19 @@
  * thread manager then catches and does the appropriate nonsense.
  * However, everything is written out here so as to not get lost.
  */
-#define SIGEV_SIGNAL	0	/* notify via signal */
-#define SIGEV_NONE	1	/* other notification: meaningless */
-#define SIGEV_THREAD	2	/* deliver via thread creation */
+#define SIGEV_NONE	128	/* other notification: meaningless */
+#define SIGEV_SIGNAL	129	/* notify via signal */
+#define SIGEV_CALLBACK	130	/* ??? */
+#define SIGEV_THREAD	131	/* deliver via thread creation */
 
 #define SIGEV_MAX_SIZE	64
 #define SIGEV_PAD_SIZE	((SIGEV_MAX_SIZE/sizeof(int)) - 4)
 
+/* XXX This one isn't yet IRIX / ABI compatible.  */
 typedef struct sigevent {
+	int sigev_notify;
 	sigval_t sigev_value;
 	int sigev_signo;
-	int sigev_notify;
 	union {
 		int _pad[SIGEV_PAD_SIZE];
 
@@ -202,4 +216,4 @@
 #define sigev_notify_function	_sigev_un._sigev_thread._function
 #define sigev_notify_attributes	_sigev_un._sigev_thread._attribute
 
-#endif /* __ASM_MIPS_SIGINFO_H */
+#endif /* _ASM_SIGINFO_H */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)