mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-24 03:59:52 +00:00
linux-user: avoid using glibc internals in _syscall5 and in definition of target_sigevent struct
Use the public sigset_t instead of the glibc specific internal __sigset_t in _syscall. Calculate the sigevent pad size is calculated in similar way as kernel does it instead of using glibc internal field _pad. This is needed for building with musl libc. Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> Signed-off-by: Riku Voipio <riku.voipio@linaro.org> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
a29e5ba21f
commit
34d6086236
@ -411,7 +411,7 @@ static int sys_inotify_init1(int flags)
|
||||
#endif
|
||||
#define __NR_sys_ppoll __NR_ppoll
|
||||
_syscall5(int, sys_ppoll, struct pollfd *, fds, nfds_t, nfds,
|
||||
struct timespec *, timeout, const __sigset_t *, sigmask,
|
||||
struct timespec *, timeout, const sigset_t *, sigmask,
|
||||
size_t, sigsetsize)
|
||||
#endif
|
||||
|
||||
|
@ -2552,12 +2552,26 @@ struct target_timer_t {
|
||||
abi_ulong ptr;
|
||||
};
|
||||
|
||||
#define TARGET_SIGEV_MAX_SIZE 64
|
||||
|
||||
/* This is architecture-specific but most architectures use the default */
|
||||
#ifdef TARGET_MIPS
|
||||
#define TARGET_SIGEV_PREAMBLE_SIZE (sizeof(int32_t) * 2 + sizeof(abi_long))
|
||||
#else
|
||||
#define TARGET_SIGEV_PREAMBLE_SIZE (sizeof(int32_t) * 2 \
|
||||
+ sizeof(target_sigval_t))
|
||||
#endif
|
||||
|
||||
#define TARGET_SIGEV_PAD_SIZE ((TARGET_SIGEV_MAX_SIZE \
|
||||
- TARGET_SIGEV_PREAMBLE_SIZE) \
|
||||
/ sizeof(int32_t))
|
||||
|
||||
struct target_sigevent {
|
||||
target_sigval_t sigev_value;
|
||||
int32_t sigev_signo;
|
||||
int32_t sigev_notify;
|
||||
union {
|
||||
int32_t _pad[ARRAY_SIZE(((struct sigevent *)0)->_sigev_un._pad)];
|
||||
int32_t _pad[TARGET_SIGEV_PAD_SIZE];
|
||||
int32_t _tid;
|
||||
|
||||
struct {
|
||||
|
Loading…
Reference in New Issue
Block a user