summaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
Diffstat (limited to 'libc')
-rw-r--r--libc/misc/sysvipc/msgq.c2
-rw-r--r--libc/misc/sysvipc/sem.c2
-rw-r--r--libc/misc/sysvipc/shm.c2
-rw-r--r--libc/sysdeps/linux/mips/bits/msq.h64
-rw-r--r--libc/sysdeps/linux/mips/bits/sem.h4
-rw-r--r--libc/sysdeps/linux/mips/bits/shm.h4
6 files changed, 65 insertions, 13 deletions
diff --git a/libc/misc/sysvipc/msgq.c b/libc/misc/sysvipc/msgq.c
index ab6d806d8..b61aaa55d 100644
--- a/libc/misc/sysvipc/msgq.c
+++ b/libc/misc/sysvipc/msgq.c
@@ -26,7 +26,7 @@ int msgctl(int msqid, int cmd, struct msqid_ds *buf)
{
#ifdef __NR_msgctl
int __ret = __libc_msgctl(msqid, cmd | __IPC_64, buf);
-#if (__WORDSIZE == 32) && defined(__UCLIBC_USE_TIME64__) && (defined(__MIPSEL__) || defined(__riscv))
+#if (__WORDSIZE == 32) && defined(__UCLIBC_USE_TIME64__) && (defined(__mips) || defined(__riscv))
union msqun arg = {.buff = buf};
if (arg.__pad != NULL) {
arg.buff->msg_stime = (__time_t)arg.buff->msg_stime_internal_1 | (__time_t)(arg.buff->msg_stime_internal_2) << 32;
diff --git a/libc/misc/sysvipc/sem.c b/libc/misc/sysvipc/sem.c
index 041b20df2..ec5c51490 100644
--- a/libc/misc/sysvipc/sem.c
+++ b/libc/misc/sysvipc/sem.c
@@ -57,7 +57,7 @@ int semctl(int semid, int semnum, int cmd, ...)
va_end (ap);
#ifdef __NR_semctl
int __ret = __semctl(semid, semnum, cmd | __IPC_64, arg.__pad);
-#if defined(__UCLIBC_USE_TIME64__)
+#if (__WORDSIZE == 32) && defined(__UCLIBC_USE_TIME64__)
if (arg.__pad != NULL) {
arg.buf->sem_otime = (__time_t)arg.buf->__sem_otime_internal_1 | (__time_t)(arg.buf->__sem_otime_internal_2) << 32;
arg.buf->sem_ctime = (__time_t)arg.buf->__sem_ctime_internal_1 | (__time_t)(arg.buf->__sem_ctime_internal_2) << 32;
diff --git a/libc/misc/sysvipc/shm.c b/libc/misc/sysvipc/shm.c
index f195072e9..e4fd2ea7b 100644
--- a/libc/misc/sysvipc/shm.c
+++ b/libc/misc/sysvipc/shm.c
@@ -67,7 +67,7 @@ int shmctl(int shmid, int cmd, struct shmid_ds *buf)
{
#ifdef __NR_shmctl
int __ret = __syscall_shmctl(shmid, cmd | __IPC_64, buf);
-#if (__WORDSIZE == 32) && defined(__MIPSEL__) && defined(__UCLIBC_USE_TIME64__)
+#if (__WORDSIZE == 32) && defined(__mips) && defined(__UCLIBC_USE_TIME64__)
union shmun arg = {.buff = buf};
if (arg.__pad != NULL) {
arg.buff->shm_atime = (__time_t)arg.buff->shm_atime_internal_1 | (__time_t)(arg.buff->shm_atime_internal_2) << 32;
diff --git a/libc/sysdeps/linux/mips/bits/msq.h b/libc/sysdeps/linux/mips/bits/msq.h
index 6a00cb671..141b1ff9f 100644
--- a/libc/sysdeps/linux/mips/bits/msq.h
+++ b/libc/sysdeps/linux/mips/bits/msq.h
@@ -35,25 +35,25 @@ typedef unsigned long int msglen_t;
/* Structure of record for one message inside the kernel.
The type `struct msg' is opaque. */
-/* Just for (__WORDSIZE == 32) && (__MIPSEL__) */
+#if (__WORDSIZE == 32) && defined(__MIPSEL__)
struct msqid_ds
{
struct ipc_perm msg_perm; /* structure describing operation permission */
-#if defined(__UCLIBC_USE_TIME64__)
+# if defined(__UCLIBC_USE_TIME64__)
unsigned long msg_stime_internal_1; /* time of last msgsnd command */
unsigned long msg_stime_internal_2;
unsigned long msg_rtime_internal_1; /* time of last msgrcv command */
unsigned long msg_rtime_internal_2;
unsigned long msg_ctime_internal_1; /* time of last change */
unsigned long msg_ctime_internal_2;
-#else
+# else
__time_t msg_stime;
unsigned long int __uclibc_unused1;
__time_t msg_rtime;
unsigned long int __uclibc_unused2;
__time_t msg_ctime;
unsigned long int __uclibc_unused3;
-#endif
+# 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 */
@@ -61,13 +61,65 @@ struct msqid_ds
__pid_t msg_lrpid; /* pid of last msgrcv() */
unsigned long int __uclibc_unused4;
unsigned long int __uclibc_unused5;
-#if defined(__UCLIBC_USE_TIME64__)
+# if defined(__UCLIBC_USE_TIME64__)
__time_t msg_stime;
__time_t msg_rtime;
__time_t msg_ctime;
-#endif
+# endif
};
+#elif (__WORDSIZE == 32) && defined(__MIPSEB__)
+struct msqid_ds
+{
+ struct ipc_perm msg_perm; /* structure describing operation permission */
+# if defined(__UCLIBC_USE_TIME64__)
+ unsigned long msg_stime_internal_2; /* time of last msgsnd command */
+ unsigned long msg_stime_internal_1;
+ unsigned long msg_rtime_internal_2; /* time of last msgrcv command */
+ unsigned long msg_rtime_internal_1;
+ unsigned long msg_ctime_internal_2; /* time of last change */
+ unsigned long msg_ctime_internal_1;
+# else
+ unsigned long int __uclibc_unused1;
+ __time_t msg_stime;
+ unsigned long int __uclibc_unused2;
+ __time_t msg_rtime;
+ unsigned long int __uclibc_unused3;
+ __time_t msg_ctime;
+# 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 __uclibc_unused4;
+ unsigned long int __uclibc_unused5;
+# if defined(__UCLIBC_USE_TIME64__)
+ __time_t msg_stime;
+ __time_t msg_rtime;
+ __time_t msg_ctime;
+# endif
+};
+
+#else
+
+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 */
+ 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 __uclibc_unused4;
+ unsigned long int __uclibc_unused5;
+};
+
+#endif
+
#ifdef __USE_MISC
# define msg_cbytes __msg_cbytes
diff --git a/libc/sysdeps/linux/mips/bits/sem.h b/libc/sysdeps/linux/mips/bits/sem.h
index 2d5ac1dd3..230d04868 100644
--- a/libc/sysdeps/linux/mips/bits/sem.h
+++ b/libc/sysdeps/linux/mips/bits/sem.h
@@ -38,7 +38,7 @@
struct semid_ds
{
struct ipc_perm sem_perm; /* operation permission struct */
-#if defined(__UCLIBC_USE_TIME64__)
+#if (__WORDSIZE == 32) && defined(__UCLIBC_USE_TIME64__)
unsigned long int __sem_otime_internal_1; /* last semop() time */
unsigned long int __sem_ctime_internal_1; /* last time changed by semctl() */
#else
@@ -46,7 +46,7 @@ struct semid_ds
__time_t sem_ctime; /* last time changed by semctl() */
#endif
unsigned long int sem_nsems; /* number of semaphores in set */
-#if defined(__UCLIBC_USE_TIME64__)
+#if (__WORDSIZE == 32) && defined(__UCLIBC_USE_TIME64__)
unsigned long int __sem_otime_internal_2;
unsigned long int __sem_ctime_internal_2;
__time_t sem_otime;
diff --git a/libc/sysdeps/linux/mips/bits/shm.h b/libc/sysdeps/linux/mips/bits/shm.h
index 9880520c3..1855a50b2 100644
--- a/libc/sysdeps/linux/mips/bits/shm.h
+++ b/libc/sysdeps/linux/mips/bits/shm.h
@@ -46,7 +46,7 @@ struct shmid_ds
{
struct ipc_perm shm_perm; /* operation permission struct */
size_t shm_segsz; /* size of segment in bytes */
-#if defined(__UCLIBC_USE_TIME64__)
+#if (__WORDSIZE == 32) && defined(__UCLIBC_USE_TIME64__)
unsigned long int shm_atime_internal_1; /* time of last shmat() */
unsigned long int shm_dtime_internal_1; /* time of last shmdt() */
unsigned long int shm_ctime_internal_1; /* time of last change by shmctl() */
@@ -58,7 +58,7 @@ struct shmid_ds
__pid_t shm_cpid; /* pid of creator */
__pid_t shm_lpid; /* pid of last shmop */
shmatt_t shm_nattch; /* number of current attaches */
-#if defined(__UCLIBC_USE_TIME64__)
+#if (__WORDSIZE == 32) && defined(__UCLIBC_USE_TIME64__)
unsigned short int shm_atime_internal_2; /* time of last shmat() */
unsigned short int shm_dtime_internal_2; /* time of last shmdt() */
unsigned short int shm_ctime_internal_2; /* time of last change by shmctl() */