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
This commit is contained in:
Enji Cooper 2017-01-04 08:07:48 +00:00
parent 2e590d595e
commit 17a0c1eb75

View File

@ -58,6 +58,11 @@ __RCSID("$NetBSD: t_fpu.c,v 1.2 2013/01/27 14:47:37 mbalmer Exp $");
#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");