svn commit: r351118 - head/contrib/netbsd-tests/lib/libpthread

Eric van Gyzen vangyzen at FreeBSD.org
Fri Aug 16 13:10:09 UTC 2019


Author: vangyzen
Date: Fri Aug 16 13:10:08 2019
New Revision: 351118
URL: https://svnweb.freebsd.org/changeset/base/351118

Log:
  Update pthread_cond_timedwait() test to current NetBSD
  
  NetBSD adapted and committed our r350620.  Update to their version 1.8.
  
  Reviewed by:	ngie
  Obtained from:	NetBSD
  MFC after:	1 week
  Sponsored by:	Dell EMC Isilon
  Differential Revision:	https://reviews.freebsd.org/D21279

Modified:
  head/contrib/netbsd-tests/lib/libpthread/t_condwait.c

Modified: head/contrib/netbsd-tests/lib/libpthread/t_condwait.c
==============================================================================
--- head/contrib/netbsd-tests/lib/libpthread/t_condwait.c	Fri Aug 16 12:28:37 2019	(r351117)
+++ head/contrib/netbsd-tests/lib/libpthread/t_condwait.c	Fri Aug 16 13:10:08 2019	(r351118)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_condwait.c,v 1.5 2017/01/16 16:29:19 christos Exp $ */
+/* $NetBSD: t_condwait.c,v 1.8 2019/08/11 11:42:23 martin Exp $ */
 
 /*
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -26,7 +26,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: t_condwait.c,v 1.5 2017/01/16 16:29:19 christos Exp $");
+__RCSID("$NetBSD: t_condwait.c,v 1.8 2019/08/11 11:42:23 martin Exp $");
 
 #include <sys/time.h>
 #include <errno.h>
@@ -50,10 +50,7 @@ static const int debug = 1;
 static void *
 run(void *param)
 {
-	struct timespec ts, to, te;
-#ifdef __FreeBSD__
-	struct timespec tw;
-#endif
+	struct timespec ts, to, te, twmin, twmax;
 	clockid_t clck;
 	pthread_condattr_t attr;
 	pthread_cond_t cond;
@@ -88,22 +85,23 @@ run(void *param)
 			printf("elapsed: %lld.%09ld sec\n",
 			    (long long)to.tv_sec, to.tv_nsec);
 		}
+		twmin.tv_sec = WAITTIME;
+		twmin.tv_nsec = 0;
 		if (isQEMU()) {
-			double to_seconds = to.tv_sec + 1e-9 * to.tv_nsec;
-			ATF_REQUIRE(to_seconds >= WAITTIME * 0.9);
-			/* Loose upper limit because of qemu timing bugs */
-			ATF_REQUIRE(to_seconds < WAITTIME * 2.5);
+			struct timespec td, t;
+			// td.tv_sec = 0;
+			// td.tv_nsec = 900000000;
+			t = twmin;
+			// timespecsub(&t, &td, &twmin);
+			td.tv_sec = 2;
+			td.tv_nsec = 500000000;
+			timespecadd(&t, &td, &twmax);
 		} else {
-#ifdef __FreeBSD__
-			tw.tv_sec = WAITTIME;
-			tw.tv_nsec = 0;
-			ATF_REQUIRE(timespeccmp(&to, &tw, >=));
-			tw.tv_sec++;
-			ATF_REQUIRE(timespeccmp(&to, &tw, <=));
-#else
-			ATF_REQUIRE_EQ(to.tv_sec, WAITTIME);
-#endif
+			twmax = twmin;
+			twmax.tv_sec++;
 		}
+		ATF_REQUIRE(timespeccmp(&to, &twmin, >=));
+		ATF_REQUIRE(timespeccmp(&to, &twmax, <=));
 		break;
 	default:
 		ATF_REQUIRE_MSG(0, "pthread_cond_timedwait: %s", strerror(ret));
@@ -152,5 +150,5 @@ ATF_TP_ADD_TCS(tp)
 {
 	ATF_TP_ADD_TC(tp, cond_wait_real);
 	ATF_TP_ADD_TC(tp, cond_wait_mono);
-	return 0;
+	return atf_no_error();
 }


More information about the svn-src-head mailing list