summaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
authorDmitry Chestnykh <dm.chestnykh@gmail.com>2024-02-26 13:21:26 +0300
committerWaldemar Brodkorb <wbx@openadk.org>2024-02-26 11:28:42 +0100
commit73017bba9d3bc0f8ada159319ff590117c9e5689 (patch)
tree05f6d950a0ef0702f9513085cd9d66cef7d7a1bb /libc
parentfb800e73a9c81a299f55de7a3aba4a0c3ab074e0 (diff)
Add time64 support for MIPS32.
Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>
Diffstat (limited to 'libc')
-rw-r--r--libc/sysdeps/linux/common/fstatat.c2
-rw-r--r--libc/sysdeps/linux/common/xstatconv.c6
-rw-r--r--libc/sysdeps/linux/mips/bits/kernel_stat.h4
-rw-r--r--libc/sysdeps/linux/mips/bits/sem.h13
4 files changed, 20 insertions, 5 deletions
diff --git a/libc/sysdeps/linux/common/fstatat.c b/libc/sysdeps/linux/common/fstatat.c
index 8064722d2..d4f566a62 100644
--- a/libc/sysdeps/linux/common/fstatat.c
+++ b/libc/sysdeps/linux/common/fstatat.c
@@ -62,7 +62,7 @@ int fstatat(int fd, const char *file, struct stat *buf, int flag)
.st_mtim.tv_nsec = tmp.stx_mtime.tv_nsec,
.st_ctim.tv_sec = tmp.stx_ctime.tv_sec,
.st_ctim.tv_nsec = tmp.stx_ctime.tv_nsec,
-#if defined(__UCLIBC_USE_TIME64__)
+#if defined(__UCLIBC_USE_TIME64__) && !defined(__mips__)
.__st_atim32.tv_sec = stx.stx_atime.tv_sec,
.__st_atim32.tv_nsec = stx.stx_atime.tv_nsec,
.__st_mtim32.tv_sec = stx.stx_mtime.tv_sec,
diff --git a/libc/sysdeps/linux/common/xstatconv.c b/libc/sysdeps/linux/common/xstatconv.c
index 4b0a7424e..391804e66 100644
--- a/libc/sysdeps/linux/common/xstatconv.c
+++ b/libc/sysdeps/linux/common/xstatconv.c
@@ -37,7 +37,7 @@ void __xstat_conv(struct kernel_stat *kbuf, struct stat *buf)
buf->st_size = kbuf->st_size;
buf->st_blksize = kbuf->st_blksize;
buf->st_blocks = kbuf->st_blocks;
-#if defined(__UCLIBC_USE_TIME64__)
+#if defined(__UCLIBC_USE_TIME64__) && !defined(__mips__)
buf->st_atim.tv_sec = kbuf->__st_atim32.tv_sec;
buf->st_atim.tv_nsec = kbuf->__st_atim32.tv_nsec;
buf->st_mtim.tv_sec = kbuf->__st_mtim32.tv_sec;
@@ -68,7 +68,7 @@ void __xstat32_conv(struct kernel_stat64 *kbuf, struct stat *buf)
buf->st_size = kbuf->st_size;
buf->st_blksize = kbuf->st_blksize;
buf->st_blocks = kbuf->st_blocks;
-#if defined(__UCLIBC_USE_TIME64__)
+#if defined(__UCLIBC_USE_TIME64__) && !defined(__mips__)
buf->st_atim.tv_sec = kbuf->__st_atim32.tv_sec;
buf->st_atim.tv_nsec = kbuf->__st_atim32.tv_nsec;
buf->st_mtim.tv_sec = kbuf->__st_mtim32.tv_sec;
@@ -102,7 +102,7 @@ void __xstat64_conv(struct kernel_stat64 *kbuf, struct stat64 *buf)
buf->st_size = kbuf->st_size;
buf->st_blksize = kbuf->st_blksize;
buf->st_blocks = kbuf->st_blocks;
-#if defined(__UCLIBC_USE_TIME64__)
+#if defined(__UCLIBC_USE_TIME64__) && !defined(__mips__)
buf->st_atim.tv_sec = kbuf->__st_atim32.tv_sec;
buf->st_atim.tv_nsec = kbuf->__st_atim32.tv_nsec;
buf->st_mtim.tv_sec = kbuf->__st_mtim32.tv_sec;
diff --git a/libc/sysdeps/linux/mips/bits/kernel_stat.h b/libc/sysdeps/linux/mips/bits/kernel_stat.h
index a2a6169a3..23a6ce61a 100644
--- a/libc/sysdeps/linux/mips/bits/kernel_stat.h
+++ b/libc/sysdeps/linux/mips/bits/kernel_stat.h
@@ -14,7 +14,11 @@ typedef struct {
} __ktimespec_t;
#else
typedef struct {
+#if defined(__UCLIBC_USE_TIME64__)
+ __S32_TYPE tv_sec;
+#else
time_t tv_sec;
+#endif
unsigned long tv_nsec;
} __ktimespec_t;
#endif
diff --git a/libc/sysdeps/linux/mips/bits/sem.h b/libc/sysdeps/linux/mips/bits/sem.h
index 3e4e9682b..35eaa05c3 100644
--- a/libc/sysdeps/linux/mips/bits/sem.h
+++ b/libc/sysdeps/linux/mips/bits/sem.h
@@ -38,9 +38,20 @@
struct semid_ds
{
struct ipc_perm sem_perm; /* operation permission struct */
- __time_t sem_otime; /* last semop() time */
+#if defined(__UCLIBC_USE_TIME64__)
+ unsigned long int __sem_otime_internal_1; /* last semop() time */
+ unsigned long int __sem_otime_internal_2;
+ unsigned long int __sem_ctime_internal_1; /* last time changed by semctl() */
+ unsigned long int __sem_ctime_internal_2;
+#else
+ __time_t sem_otime; /* last semop() time */
__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__)
+ __time_t sem_otime;
+ __time_t sem_ctime;
+#endif
unsigned long int __uclibc_unused1;
unsigned long int __uclibc_unused2;
};