Path: blob/main/tools/test/stress2/testcases/thr2/thr2.c
39566 views
/*-1* Copyright (c) 2008 Peter Holm <[email protected]>2* All rights reserved.3*4* Redistribution and use in source and binary forms, with or without5* modification, are permitted provided that the following conditions6* are met:7* 1. Redistributions of source code must retain the above copyright8* notice, this list of conditions and the following disclaimer.9* 2. Redistributions in binary form must reproduce the above copyright10* notice, this list of conditions and the following disclaimer in the11* documentation and/or other materials provided with the distribution.12*13* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND14* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE15* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE16* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE17* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL18* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS19* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)20* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT21* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY22* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF23* SUCH DAMAGE.24*25*/2627#include <err.h>28#include <fcntl.h>29#include <pthread.h>30#include <signal.h>31#include <stdio.h>32#include <stdlib.h>33#include <string.h>34#include <unistd.h>3536#include "stress.h"3738#define NTHREADS 2563940static volatile int done = 0;4142int43setup(int nb __unused)44{45return (0);46}4748void49cleanup(void)50{51}5253static void *54thr1(void *arg __unused)55{56return (0);57}5859static void *60thr2(void *arg __unused)61{62while (done == 0)63pthread_yield();64return (0);65}6667int68test(void)69{70pthread_t threads[NTHREADS];71int i;72int r;7374for (i = 0; i < NTHREADS; i++)75if ((r = pthread_create(&threads[i], NULL, thr1, 0)) != 0)76errc(1, r, "pthread_create()");7778for (i = 0; i < NTHREADS; i++)79if (pthread_join(threads[i], NULL) != 0)80errc(1, r, "pthread_join(%d)", i);8182for (i = 0; i < NTHREADS; i++)83if ((r = pthread_create(&threads[i], NULL, thr2, 0)) != 0)84errc(1, r, "pthread_create()");85done = 1;8687for (i = 0; i < NTHREADS; i++)88if ((r = pthread_join(threads[i], NULL)) != 0)89errc(1, r, "pthread_join(%d)", i);9091return (0);92}939495