From: Paul Floyd Date: Sun, 27 Aug 2023 14:14:00 +0000 (+0200) Subject: FreeBSD: add 2 new _umtx_op op codes for FreeBSD 14 X-Git-Tag: VALGRIND_3_22_0~110 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e6ee535c1064663ce1f5c2a96388f239bfd575be;p=thirdparty%2Fvalgrind.git FreeBSD: add 2 new _umtx_op op codes for FreeBSD 14 --- diff --git a/coregrind/m_syswrap/syswrap-freebsd.c b/coregrind/m_syswrap/syswrap-freebsd.c index a59872b3c9..17abf132b6 100644 --- a/coregrind/m_syswrap/syswrap-freebsd.c +++ b/coregrind/m_syswrap/syswrap-freebsd.c @@ -4607,6 +4607,27 @@ PRE(sys__umtx_op) struct umtx_robust_lists_params *, obj, int, op, unsigned long, flags); PRE_MEM_READ( "_umtx_op_robust_lists(mutex)", ARG3, sizeof(struct vki_umtx_robust_lists_params) ); break; +#if (FREEBSD_VERS >= FREEBSD_14) + case VKI_UMTX_OP_GET_MIN_TIMEOUT: + PRINT( "sys__umtx_op ( GET_MIN_TIMEOUT, %#" FMT_REGWORD "x)", ARG4); + // bit of a pain just reads args 2 and 4 + if (VG_(tdict).track_pre_reg_read) { + PRRSN; + PRA2("_umtx_op_get_min_timeout",int,op); + PRA4("_umtx_op_get_min_timeout",long int*,timeout); + } + PRE_MEM_WRITE( "_umtx_op_get_min_timout(uaddr)", ARG4, sizeof(long int) ); + break; + case VKI_UMTX_OP_SET_MIN_TIMEOUT: + PRINT( "sys__umtx_op ( SET_MIN_TIMEOUT, %" FMT_REGWORD "u)", ARG3); + // bit of a pain just reads args 2 and 3 + if (VG_(tdict).track_pre_reg_read) { + PRRSN; + PRA2("_umtx_op_set_min_timeout",int,op); + PRA3("_umtx_op_set_min_timeout",unsigned long,timeout); + } + break; +#endif default: VG_(umsg)("WARNING: _umtx_op unsupported value.\n"); PRINT( "sys__umtx_op ( %#" FMT_REGWORD "x, %" FMT_REGWORD "u(UNKNOWN), %" FMT_REGWORD "u, %#" FMT_REGWORD "x, %#" FMT_REGWORD "x )", ARG1, ARG2, ARG3, ARG4, ARG5); @@ -4673,6 +4694,14 @@ POST(sys__umtx_op) break; case VKI_UMTX_OP_SHM: case VKI_UMTX_OP_ROBUST_LISTS: + break; +#if (FREEBSD_VERS >= FREEBSD_14 || 1) + case VKI_UMTX_OP_GET_MIN_TIMEOUT: + POST_MEM_WRITE( ARG4, sizeof(long int) ); + break; + case VKI_UMTX_OP_SET_MIN_TIMEOUT: + break; +#endif default: break; } @@ -4957,7 +4986,7 @@ PRE(sys_sctp_generic_recvmsg) if (ARG4 != (Addr)NULL) { ML_(buf_and_len_pre_check) (tid, ARG4, ARG5, - "sctp_generic_recvmsg(from)", + "sctp_generic_recvmsg(from)", "sctp_generic_recvmsg(fromlen_in)"); } diff --git a/include/vki/vki-freebsd.h b/include/vki/vki-freebsd.h index f9ca51c036..92ca8a6878 100644 --- a/include/vki/vki-freebsd.h +++ b/include/vki/vki-freebsd.h @@ -2047,34 +2047,37 @@ struct vki_umtx_robust_lists_params { vki_uintptr_t robust_inact_offset; }; -#define VKI_UMTX_OP_LOCK 0 -#define VKI_UMTX_OP_UNLOCK 1 -#define VKI_UMTX_OP_WAIT 2 -#define VKI_UMTX_OP_WAKE 3 -#define VKI_UMTX_OP_MUTEX_TRYLOCK 4 -#define VKI_UMTX_OP_MUTEX_LOCK 5 -#define VKI_UMTX_OP_MUTEX_UNLOCK 6 -#define VKI_UMTX_OP_SET_CEILING 7 -#define VKI_UMTX_OP_CV_WAIT 8 -#define VKI_UMTX_OP_CV_SIGNAL 9 -#define VKI_UMTX_OP_CV_BROADCAST 10 -#define VKI_UMTX_OP_WAIT_UINT 11 -#define VKI_UMTX_OP_RW_RDLOCK 12 -#define VKI_UMTX_OP_RW_WRLOCK 13 -#define VKI_UMTX_OP_RW_UNLOCK 14 -#define VKI_UMTX_OP_WAIT_UINT_PRIVATE 15 -#define VKI_UMTX_OP_WAKE_PRIVATE 16 -#define VKI_UMTX_OP_MUTEX_WAIT 17 -#define VKI_UMTX_OP_MUTEX_WAKE 18 /* deprecated */ -#define VKI_UMTX_OP_SEM_WAIT 19 -#define VKI_UMTX_OP_SEM_WAKE 20 -#define VKI_UMTX_OP_NWAKE_PRIVATE 21 -#define VKI_UMTX_OP_MUTEX_WAKE2 22 +#define VKI_UMTX_OP_LOCK 0 +#define VKI_UMTX_OP_UNLOCK 1 +#define VKI_UMTX_OP_WAIT 2 +#define VKI_UMTX_OP_WAKE 3 +#define VKI_UMTX_OP_MUTEX_TRYLOCK 4 +#define VKI_UMTX_OP_MUTEX_LOCK 5 +#define VKI_UMTX_OP_MUTEX_UNLOCK 6 +#define VKI_UMTX_OP_SET_CEILING 7 +#define VKI_UMTX_OP_CV_WAIT 8 +#define VKI_UMTX_OP_CV_SIGNAL 9 +#define VKI_UMTX_OP_CV_BROADCAST 10 +#define VKI_UMTX_OP_WAIT_UINT 11 +#define VKI_UMTX_OP_RW_RDLOCK 12 +#define VKI_UMTX_OP_RW_WRLOCK 13 +#define VKI_UMTX_OP_RW_UNLOCK 14 +#define VKI_UMTX_OP_WAIT_UINT_PRIVATE 15 +#define VKI_UMTX_OP_WAKE_PRIVATE 16 +#define VKI_UMTX_OP_MUTEX_WAIT 17 +#define VKI_UMTX_OP_MUTEX_WAKE 18 /* deprecated */ +#define VKI_UMTX_OP_SEM_WAIT 19 +#define VKI_UMTX_OP_SEM_WAKE 20 +#define VKI_UMTX_OP_NWAKE_PRIVATE 21 +#define VKI_UMTX_OP_MUTEX_WAKE2 22 #define VKI_UMTX_OP_SEM2_WAIT 23 #define VKI_UMTX_OP_SEM2_WAKE 24 #define VKI_UMTX_OP_SHM 25 #define VKI_UMTX_OP_ROBUST_LISTS 26 -#define VKI_UMTX_OP_MAX 27 +#if (FREEBSD_VERS >= FREEBSD_14) +#define VKI_UMTX_OP_GET_MIN_TIMEOUT 27 +#define VKI_UMTX_OP_SET_MIN_TIMEOUT 28 +#endif //----------------------------------------------------------------------