Ralf Baechle wrote:
[snip]
> So basically I like Thiemo's suggestion for the fix.  But - the purpose
> of the three unused 32-bit fields in struct msgid64_ds is dealing with
> the year 2038 problem.  So maybe we should reorder fields like:
> 
> [...]
> #if defined(CONFIG_MIPS32) && !defined(CONFIG_CPU_LITTLE_ENDIAN)
>       unsigned long   __unused1;
>       __kernel_time_t msg_stime;
> #else if defined(CONFIG_MIPS32) && defined(CONFIG_CPU_LITTLE_ENDIAN)
>       __kernel_time_t msg_stime;
>       unsigned long   __unused1;
> #else
>       __kernel_time_t msg_stime;
> #endif
> [...]
> 
> ?

This looks good for the kernel side.

> That would eventually permit extending fields to 64-bit and take care of
> endianess issues.
> 
> Comments?

I missed the other endianness. Appended is the version needed for glibc.


Thiemo


2003-10-07  Thiemo Seufer <[EMAIL PROTECTED]>

        * sysdeps/unix/sysv/linux/mips/bits/msq.h (msqid_ds): Add missing
        padding.


Index: sysdeps/unix/sysv/linux/mips/bits/msq.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/bits/msq.h,v
retrieving revision 1.1
diff -a -d -u -p -r1.1 msq.h
--- sysdeps/unix/sysv/linux/mips/bits/msq.h     26 Aug 2002 01:49:55 -0000      1.1
+++ sysdeps/unix/sysv/linux/mips/bits/msq.h     7 Oct 2003 18:30:30 -0000
@@ -38,16 +38,34 @@ typedef unsigned long int msglen_t;
 struct msqid_ds
 {
   struct ipc_perm msg_perm;    /* structure describing operation permission */
+#if __WORDSIZE == 32 && defined (__MIPSEB__)
+  unsigned long int __unused1;
+#endif
   __time_t msg_stime;          /* time of last msgsnd command */
+#if __WORDSIZE == 32 && defined (__MIPSEL__)
+  unsigned long int __unused1;
+#endif
+#if __WORDSIZE == 32 && defined (__MIPSEB__)
+  unsigned long int __unused2;
+#endif
   __time_t msg_rtime;          /* time of last msgrcv command */
+#if __WORDSIZE == 32 && defined (__MIPSEL__)
+  unsigned long int __unused2;
+#endif
+#if __WORDSIZE == 32 && defined (__MIPSEB__)
+  unsigned long int __unused3;
+#endif
   __time_t msg_ctime;          /* time of last change */
+#if __WORDSIZE == 32 && defined (__MIPSEL__)
+  unsigned long int __unused3;
+#endif
   unsigned long int __msg_cbytes; /* current number of bytes on queue */
   msgqnum_t msg_qnum;          /* number of messages currently on queue */
   msglen_t 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;
+  unsigned long int __unused4;
+  unsigned long int __unused5;
 };
 
 #ifdef __USE_MISC


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to