Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Deal with new sem_wait2 and sem_wake2 syscalls in head.
  • Loading branch information
seanbruno committed Nov 2, 2014
1 parent 687136b commit 2478a4e
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 1 deletion.
19 changes: 19 additions & 0 deletions bsd-user/freebsd/os-thread.c
Expand Up @@ -225,6 +225,25 @@ abi_long freebsd_umtx_mutex_wake2(abi_ulong target_addr,
}
#endif /* UMTX_OP_MUTEX_WAKE2 */

#if defined(__FreeBSD_version) && __FreeBSD_version > 1100000
abi_long freebsd_umtx_sem_wait(abi_ulong obj, struct timespec *timeout)
{

/* XXX Assumes struct _usem is opauque to the user */
if (!access_ok(VERIFY_WRITE, obj, sizeof(struct target__usem))) {
return -TARGET_EFAULT;
}
return get_errno(_umtx_op(g2h(obj), UMTX_OP_SEM2_WAIT, 0, NULL, timeout));
}

abi_long freebsd_umtx_sem_wake(abi_ulong obj, uint32_t val)
{

return get_errno(_umtx_op(g2h(obj), UMTX_OP_SEM2_WAKE, val, NULL, NULL));
}
#endif

#else
abi_long freebsd_umtx_sem_wait(abi_ulong obj, struct timespec *timeout)
{

Expand Down
6 changes: 6 additions & 0 deletions bsd-user/freebsd/os-thread.h
Expand Up @@ -486,6 +486,9 @@ static inline abi_long do_freebsd__umtx_op(abi_ulong obj, int op, abi_ulong val,
break;
#endif /* UMTX_OP_NWAKE_PRIVATE */

#if defined(__FreeBSD_version) && __FreeBSD_version > 1100000
case TARGET_UMTX_OP_SEM2_WAIT:
#endif
case TARGET_UMTX_OP_SEM_WAIT:
if (target_ts != 0) {
if (t2h_freebsd_timespec(&ts, target_ts)) {
Expand All @@ -497,6 +500,9 @@ static inline abi_long do_freebsd__umtx_op(abi_ulong obj, int op, abi_ulong val,
}
break;

#if defined(__FreeBSD_version) && __FreeBSD_version > 1100000
case TARGET_UMTX_OP_SEM2_WAKE:
#endif
case TARGET_UMTX_OP_SEM_WAKE:
/* Don't need to do access_ok(). */
ret = freebsd_umtx_sem_wake(obj, val);
Expand Down
4 changes: 3 additions & 1 deletion bsd-user/syscall_defs.h
Expand Up @@ -633,7 +633,9 @@ typedef struct {
#define TARGET_UMTX_OP_SEM_WAKE 20
#define TARGET_UMTX_OP_NWAKE_PRIVATE 21
#define TARGET_UMTX_OP_MUTEX_WAKE2 22
#define TARGET_UMTX_OP_MAX 23
#define TARGET_UMTX_OP_SEM2_WAIT 23
#define TARGET_UMTX_OP_SEM2_WAKE 24
#define TARGET_UMTX_OP_MAX 25

/* flags for UMTX_OP_CV_WAIT */
#define TARGET_CVWAIT_CHECK_UNPARKING 0x01
Expand Down

0 comments on commit 2478a4e

Please sign in to comment.