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);
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;
}
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)");
}
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
//----------------------------------------------------------------------