Message ID | 20230405213612.15942-8-imp@bsdimp.com |
---|---|
State | New |
Headers | show |
Series | bsd-user 2023 Q2 first batch | expand |
On 4/5/23 14:36, Warner Losh wrote: > @@ -98,11 +75,9 @@ struct target_iovec { > * sys/timex.h > */ > > -typedef abi_long target_freebsd_suseconds_t; > - > /* compare to sys/timespec.h */ > struct target_freebsd_timespec { > - target_freebsd_time_t tv_sec; /* seconds */ > + target_time_t tv_sec; /* seconds */ > abi_long tv_nsec; /* and nanoseconds */ > #if !defined(TARGET_I386) && TARGET_ABI_BITS == 32 > abi_long _pad; > @@ -120,8 +95,8 @@ struct target_freebsd__umtx_time { > }; > > struct target_freebsd_timeval { > - target_freebsd_time_t tv_sec; /* seconds */ > - target_freebsd_suseconds_t tv_usec;/* and microseconds */ > + target_time_t tv_sec; /* seconds */ > + target_suseconds_t tv_usec;/* and microseconds */ Did I miss where target_suseconds_t got defined? With the context provided, you remove target_freebsd_suseconds_t but don't replace it. r~
On Sat, Apr 8, 2023 at 1:08 PM Richard Henderson < richard.henderson@linaro.org> wrote: > On 4/5/23 14:36, Warner Losh wrote: > > @@ -98,11 +75,9 @@ struct target_iovec { > > * sys/timex.h > > */ > > > > -typedef abi_long target_freebsd_suseconds_t; > > - > > /* compare to sys/timespec.h */ > > struct target_freebsd_timespec { > > - target_freebsd_time_t tv_sec; /* seconds */ > > + target_time_t tv_sec; /* seconds */ > > abi_long tv_nsec; /* and nanoseconds */ > > #if !defined(TARGET_I386) && TARGET_ABI_BITS == 32 > > abi_long _pad; > > @@ -120,8 +95,8 @@ struct target_freebsd__umtx_time { > > }; > > > > struct target_freebsd_timeval { > > - target_freebsd_time_t tv_sec; /* seconds */ > > - target_freebsd_suseconds_t tv_usec;/* and microseconds */ > > + target_time_t tv_sec; /* seconds */ > > + target_suseconds_t tv_usec;/* and microseconds */ > > Did I miss where target_suseconds_t got defined? > With the context provided, you remove target_freebsd_suseconds_t but don't > replace it. > At the very end of the first file bsd-user/freebsd/os-syscall.h I define it. Warner
On 4/10/23 10:12, Warner Losh wrote: > > > On Sat, Apr 8, 2023 at 1:08 PM Richard Henderson <richard.henderson@linaro.org > <mailto:richard.henderson@linaro.org>> wrote: > > On 4/5/23 14:36, Warner Losh wrote: > > @@ -98,11 +75,9 @@ struct target_iovec { > > * sys/timex.h > > */ > > > > -typedef abi_long target_freebsd_suseconds_t; > > - > > /* compare to sys/timespec.h */ > > struct target_freebsd_timespec { > > - target_freebsd_time_t tv_sec; /* seconds */ > > + target_time_t tv_sec; /* seconds */ > > abi_long tv_nsec; /* and nanoseconds */ > > #if !defined(TARGET_I386) && TARGET_ABI_BITS == 32 > > abi_long _pad; > > @@ -120,8 +95,8 @@ struct target_freebsd__umtx_time { > > }; > > > > struct target_freebsd_timeval { > > - target_freebsd_time_t tv_sec; /* seconds */ > > - target_freebsd_suseconds_t tv_usec;/* and microseconds */ > > + target_time_t tv_sec; /* seconds */ > > + target_suseconds_t tv_usec;/* and microseconds */ > > Did I miss where target_suseconds_t got defined? > With the context provided, you remove target_freebsd_suseconds_t but don't replace it. > > > At the very end of the first file bsd-user/freebsd/os-syscall.h I define it. Ah, there it is, thanks. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/bsd-user/freebsd/os-syscall.h b/bsd-user/freebsd/os-syscall.h new file mode 100644 index 00000000000..1f2c0acb1c5 --- /dev/null +++ b/bsd-user/freebsd/os-syscall.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2023 Warner Losh <imp@bsdimp.com> + * + * SPDX-License-Identifier: BSD-2-Clause + * + * OS-Specific portion of syscall_defs.h + */ + +#include "freebsd/syscall_nr.h" + +/* + * FreeBSD uses a 64bits time_t except on i386 so we have to add a special case + * here. + */ +#if (!defined(TARGET_I386)) +typedef int64_t target_time_t; +#else +typedef int32_t target_time_t; +#endif + +typedef abi_long target_suseconds_t; diff --git a/bsd-user/netbsd/os-syscall.h b/bsd-user/netbsd/os-syscall.h new file mode 100644 index 00000000000..7507350d8d2 --- /dev/null +++ b/bsd-user/netbsd/os-syscall.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2023 Warner Losh <imp@bsdimp.com> + * + * SPDX-License-Identifier: BSD-2-Clause + * + * OS-Specific portion of syscall_defs.h + */ + +#include "netbsd/syscall_nr.h" + +/* + * time_t seems to be very inconsistly defined for the different *BSD's... + * + * NetBSD always uses int64_t. + */ +typedef int64_t target_time_t; diff --git a/bsd-user/openbsd/os-syscall.h b/bsd-user/openbsd/os-syscall.h new file mode 100644 index 00000000000..191a76fa935 --- /dev/null +++ b/bsd-user/openbsd/os-syscall.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2023 Warner Losh <imp@bsdimp.com> + * + * SPDX-License-Identifier: BSD-2-Clause + * + * OS-Specific portion of syscall_defs.h + */ + +#include "openbsd/syscall_nr.h" + +/* + * time_t seems to be very inconsistly defined for the different *BSD's... + * + * OpenBSD always uses int. + */ +typedef int target_time_t; diff --git a/bsd-user/syscall_defs.h b/bsd-user/syscall_defs.h index b6d113d24a7..489d3a2e292 100644 --- a/bsd-user/syscall_defs.h +++ b/bsd-user/syscall_defs.h @@ -25,30 +25,7 @@ #include "errno_defs.h" -#include "freebsd/syscall_nr.h" -#include "netbsd/syscall_nr.h" -#include "openbsd/syscall_nr.h" - -/* - * machine/_types.h - * or x86/_types.h - */ - -/* - * time_t seems to be very inconsistly defined for the different *BSD's... - * - * FreeBSD uses a 64bits time_t except on i386 - * so we have to add a special case here. - * - * On NetBSD time_t is always defined as an int64_t. On OpenBSD time_t - * is always defined as an int. - * - */ -#if (!defined(TARGET_I386)) -typedef int64_t target_freebsd_time_t; -#else -typedef int32_t target_freebsd_time_t; -#endif +#include "os-syscall.h" struct target_iovec { abi_long iov_base; /* Starting address */ @@ -98,11 +75,9 @@ struct target_iovec { * sys/timex.h */ -typedef abi_long target_freebsd_suseconds_t; - /* compare to sys/timespec.h */ struct target_freebsd_timespec { - target_freebsd_time_t tv_sec; /* seconds */ + target_time_t tv_sec; /* seconds */ abi_long tv_nsec; /* and nanoseconds */ #if !defined(TARGET_I386) && TARGET_ABI_BITS == 32 abi_long _pad; @@ -120,8 +95,8 @@ struct target_freebsd__umtx_time { }; struct target_freebsd_timeval { - target_freebsd_time_t tv_sec; /* seconds */ - target_freebsd_suseconds_t tv_usec;/* and microseconds */ + target_time_t tv_sec; /* seconds */ + target_suseconds_t tv_usec;/* and microseconds */ #if !defined(TARGET_I386) && TARGET_ABI_BITS == 32 abi_long _pad; #endif
Move the include of the system calls to os-syscall.h. Include that from syscall_defs.h. Use target_time_t and target_suseconds_t instead of the variant that has _freebsd_ in the name. Define these for OpenBSD and NetBSD based on comments in the file. Signed-off-by: Warner Losh <imp@bsdimp.com> --- bsd-user/freebsd/os-syscall.h | 21 +++++++++++++++++++++ bsd-user/netbsd/os-syscall.h | 16 ++++++++++++++++ bsd-user/openbsd/os-syscall.h | 16 ++++++++++++++++ bsd-user/syscall_defs.h | 33 ++++----------------------------- 4 files changed, 57 insertions(+), 29 deletions(-) create mode 100644 bsd-user/freebsd/os-syscall.h create mode 100644 bsd-user/netbsd/os-syscall.h create mode 100644 bsd-user/openbsd/os-syscall.h