Author: ngie
Date: Wed Jan  4 08:07:48 2017
New Revision: 311265
URL: https://svnweb.freebsd.org/changeset/base/311265

Log:
  fpu: ensure calls to pthread_create succeed and test sched_yield to make
  sure it returns 0
  
  sched_yield tests for values returning 0 of type int and sched_yield is
  of type long, so the test is a mismatch
  
  MFC after:    1 week
  Reported by:  Coverity
  CID:          1254953, 1254954, 1254965, 1254966

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

Modified: head/contrib/netbsd-tests/lib/libpthread/t_fpu.c
==============================================================================
--- head/contrib/netbsd-tests/lib/libpthread/t_fpu.c    Wed Jan  4 08:04:58 
2017        (r311264)
+++ head/contrib/netbsd-tests/lib/libpthread/t_fpu.c    Wed Jan  4 08:07:48 
2017        (r311265)
@@ -58,6 +58,11 @@ __RCSID("$NetBSD: t_fpu.c,v 1.2 2013/01/
 
 #include <atf-c.h>
 
+#ifdef __FreeBSD__
+#include <errno.h>
+#include <string.h>
+#endif
+
 #include "h_common.h"
 
 #define N_RECURSE 10
@@ -77,14 +82,24 @@ stir(void *p)
 
        for (;;) {
                x = sin ((y = cos (x + y + .4)) - (z = cos (x + z + .6)));
+#ifdef __FreeBSD__
+               ATF_REQUIRE_MSG(sched_yield() == 0,
+                   "sched_yield failed: %s", strerror(errno));
+#else
                PTHREAD_REQUIRE(sched_yield());
+#endif
        }
 }
 
 static double
 mul3(double x, double y, double z)
 {
+#ifdef __FreeBSD__
+       ATF_REQUIRE_MSG(sched_yield() == 0,
+           "sched_yield failed: %s", strerror(errno));
+#else
        PTHREAD_REQUIRE(sched_yield());
+#endif
 
        return x * y * z;
 }
@@ -114,7 +129,11 @@ bar(void *p)
 static void
 recurse(void) {
        pthread_t s2;
+#ifdef __FreeBSD__
+       PTHREAD_REQUIRE(pthread_create(&s2, 0, bar, 0));
+#else
        pthread_create(&s2, 0, bar, 0);
+#endif
        sleep(20); /* XXX must be long enough for our slowest machine */
 }
 
@@ -134,7 +153,11 @@ ATF_TC_BODY(fpu, tc)
 
        PTHREAD_REQUIRE(pthread_mutex_init(&recursion_depth_lock, 0));
 
+#ifdef __FreeBSD__
+       PTHREAD_REQUIRE(pthread_create(&s5, 0, stir, stirseed));
+#else
        pthread_create(&s5, 0, stir, stirseed);
+#endif
        recurse();
 
        atf_tc_fail("exiting from main");
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to