From 6f82d0e8f9756938f04071892206a5af85e676f0 Mon Sep 17 00:00:00 2001 From: cvs2svn Date: Fri, 13 Jul 2012 17:49:56 +0000 Subject: This commit was manufactured by cvs2git to create tag 'eric_g2k12'. --- .../lib/libc/stdio_threading/include/local.h | 81 ---------------------- 1 file changed, 81 deletions(-) delete mode 100644 src/regress/lib/libc/stdio_threading/include/local.h (limited to 'src/regress/lib/libc/stdio_threading/include') diff --git a/src/regress/lib/libc/stdio_threading/include/local.h b/src/regress/lib/libc/stdio_threading/include/local.h deleted file mode 100644 index e2ad4e31e0..0000000000 --- a/src/regress/lib/libc/stdio_threading/include/local.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) 2008 Bret S. Lambert - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include -#include -#include -#include -#include - -#define THREAD_COUNT 64 - -#define TEXT "barnacles" -#define TEXT_N "barnacles\n" - -void run_threads(void (*)(void *), void *); - -static pthread_rwlock_t start; -static void (*real_func)(void *); - -static void * -thread(void *arg) -{ - int r; - - if ((r = pthread_rwlock_rdlock(&start))) - errx(1, "could not obtain lock in thread: %s", strerror(r)); - real_func(arg); - if ((r = pthread_rwlock_unlock(&start))) - errx(1, "could not release lock in thread: %s", strerror(r)); - return NULL; -} - -void -run_threads(void (*func)(void *), void *arg) -{ - pthread_t self, pthread[THREAD_COUNT]; - int i, r; - - self = pthread_self(); - real_func = func; - if ((r = pthread_rwlock_init(&start, NULL))) - errx(1, "could not initialize lock: %s", strerror(r)); - - if ((r = pthread_rwlock_wrlock(&start))) /* block */ - errx(1, "could not lock lock: %s", strerror(r)); - - for (i = 0; i < THREAD_COUNT; i++) - if ((r = pthread_create(&pthread[i], NULL, thread, arg))) { - warnx("could not create thread: %s", strerror(r)); - pthread[i] = self; - } - - - if ((r = pthread_rwlock_unlock(&start))) /* unleash */ - errx(1, "could not release lock: %s", strerror(r)); - - sleep(1); - - if ((r = pthread_rwlock_wrlock(&start))) /* sync */ - errx(1, "parent could not sync with children: %s", - strerror(r)); - - for (i = 0; i < THREAD_COUNT; i++) - if (! pthread_equal(pthread[i], self) && - (r = pthread_join(pthread[i], NULL))) - warnx("could not join thread: %s", strerror(r)); -} - -- cgit v1.2.3-55-g6feb