diff options
-rw-r--r-- | libc/misc/sysvipc/msgq.c | 2 | ||||
-rw-r--r-- | libc/misc/sysvipc/sem.c | 2 | ||||
-rw-r--r-- | libc/misc/sysvipc/shm.c | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/mips/bits/msq.h | 64 | ||||
-rw-r--r-- | libc/sysdeps/linux/mips/bits/sem.h | 4 | ||||
-rw-r--r-- | libc/sysdeps/linux/mips/bits/shm.h | 4 |
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() */ |