* sysdeps/unix/sysv/linux/mips/bits/siginfo.h (struct siginfo):
authorDaniel Jacobowitz <dan@codesourcery.com>
Tue, 4 Mar 2008 19:39:30 +0000 (19:39 +0000)
committerDaniel Jacobowitz <dan@codesourcery.com>
Tue, 4 Mar 2008 19:39:30 +0000 (19:39 +0000)
Reorganize to match other architectures.  Replace _timer._timer1
and _timer._timer2 with _timer.si_tid, _timer.si_overrun, and
_timer.si_sigval.  Correct the type of _sigpoll.si_band.
(si_timerid, si_overrun): Define.
(__SIGEV_PAD_SIZE): Correct for __WORDSIZE == 64.
(__pthread_attr_s): Remove declaration.
(struct sigevent): Remove XXX.  Add _tid.

ChangeLog.mips
sysdeps/unix/sysv/linux/mips/bits/siginfo.h

index ffbc344..d73b218 100644 (file)
@@ -1,3 +1,14 @@
+2008-03-04  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * sysdeps/unix/sysv/linux/mips/bits/siginfo.h (struct siginfo):
+       Reorganize to match other architectures.  Replace _timer._timer1
+       and _timer._timer2 with _timer.si_tid, _timer.si_overrun, and
+       _timer.si_sigval.  Correct the type of _sigpoll.si_band.
+       (si_timerid, si_overrun): Define.
+       (__SIGEV_PAD_SIZE): Correct for __WORDSIZE == 64.
+       (__pthread_attr_s): Remove declaration.
+       (struct sigevent): Remove XXX.  Add _tid.
+
 2007-10-22  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * sysdeps/unix/sysv/linux/mips/bits/fcntl.h (F_DUPFD_CLOEXEC): Define.
index 787e365..e0fc81a 100644 (file)
@@ -1,5 +1,5 @@
 /* siginfo_t, sigevent and constants.  Linux/MIPS version.
-   Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005
+   Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
        Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -70,6 +70,22 @@ typedef struct siginfo
            __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
          {
@@ -89,24 +105,9 @@ typedef struct siginfo
        /* SIGPOLL.  */
        struct
          {
-           int si_band;        /* Band event for SIGPOLL.  */
+           long int si_band;   /* Band event for SIGPOLL.  */
            int si_fd;
          } _sigpoll;
-
-       /* 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;
       } _sifields;
   } siginfo_t;
 
@@ -114,6 +115,8 @@ typedef struct siginfo
 /* 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
@@ -265,12 +268,12 @@ enum
 
 /* Structure to transport application-defined values with signals.  */
 # define __SIGEV_MAX_SIZE      64
-# define __SIGEV_PAD_SIZE      ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
-
-/* Forward declaration of the `pthread_attr_t' type.  */
-struct __pthread_attr_s;
+# if __WORDSIZE == 64
+#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
+# else
+#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
+# endif
 
-/* XXX This one might need to change!!!  */
 typedef struct sigevent
   {
     sigval_t sigev_value;
@@ -281,6 +284,10 @@ typedef struct sigevent
       {
        int _pad[__SIGEV_PAD_SIZE];
 
+       /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
+          thread to receive the signal.  */
+       __pid_t _tid;
+
        struct
          {
            void (*_function) (sigval_t);       /* Function to start.  */