diff options
Diffstat (limited to 'lib/libpthread/pthreads/pthread_init.c')
-rw-r--r-- | lib/libpthread/pthreads/pthread_init.c | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/lib/libpthread/pthreads/pthread_init.c b/lib/libpthread/pthreads/pthread_init.c deleted file mode 100644 index 110029290b5..00000000000 --- a/lib/libpthread/pthreads/pthread_init.c +++ /dev/null @@ -1,135 +0,0 @@ -/* ==== pthread_init.c ======================================================== - * Copyright (c) 1993, 1994 by Chris Provenzano, proven@mit.edu - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Chris Provenzano. - * 4. The name of Chris Provenzano may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY CHRIS PROVENZANO ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL CHRIS PROVENZANO BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Description : Pthread_init routine. - * - * 1.00 94/09/20 proven - * -Started coding this file. - */ - -#ifndef lint -static const char rcsid[] = "$Id: pthread_init.c,v 1.1 1998/07/21 13:20:16 peter Exp $"; -#endif - -#include <pthread.h> -#include <stdlib.h> -#include <string.h> - -/* - * errno is declared here to prevent the linker from pulling in errno - * from the C library (and whatever else is in that file). I also use - * errno as the default location for error numbers for the initial thread - * giving some backwards compatibility. - */ -#ifdef errno -#undef errno -#endif - -#if !defined(M_UNIX) -int errno; -#else -extern int errno; -#endif - -/* ========================================================================== - * pthread_init() - * - * We use features of the C++ linker to make sure this function is called - * before anything else is done in the program. See init.cc. - */ -void pthread_init(void) -{ - struct machdep_pthread machdep_data = MACHDEP_PTHREAD_INIT; - - /* Only call this once */ - if (pthread_initial) { - return; - } - - pthread_pagesize = getpagesize(); - - /* Initialize the first thread */ - if ((pthread_initial = (pthread_t)malloc(sizeof(struct pthread))) && - (pthread_current_prio_queue = (struct pthread_prio_queue *) - malloc(sizeof(struct pthread_prio_queue)))) { - memcpy(&(pthread_initial->machdep_data), &machdep_data, - sizeof(machdep_data)); - memcpy(&pthread_initial->attr, &pthread_attr_default, - sizeof(pthread_attr_t)); - - pthread_initial->pthread_priority = PTHREAD_DEFAULT_PRIORITY; - pthread_initial->state = PS_RUNNING; - - pthread_queue_init(&(pthread_initial->join_queue)); - pthread_initial->specific_data = NULL; - pthread_initial->specific_data_count = 0; - pthread_initial->cleanup = NULL; - pthread_initial->queue = NULL; - pthread_initial->next = NULL; - pthread_initial->flags = 0; - pthread_initial->pll = NULL; - pthread_initial->sll = NULL; - - /* PTHREADS spec says we start with cancellability on and deferred */ - SET_PF_CANCEL_STATE(pthread_initial, PTHREAD_CANCEL_ENABLE); - SET_PF_CANCEL_TYPE(pthread_initial, PTHREAD_CANCEL_DEFERRED); - - - /* Ugly errno hack */ - pthread_initial->error_p = &errno; - pthread_initial->error = 0; - - pthread_prio_queue_init(pthread_current_prio_queue); - pthread_link_list = pthread_initial; - pthread_run = pthread_initial; - - uthread_sigmask = &(pthread_run->sigmask); - - /* XXX can I assume the mask and pending siganl sets are empty. */ - sigemptyset(&(pthread_initial->sigpending)); - sigemptyset(&(pthread_initial->sigmask)); - pthread_initial->sigcount = 0; - - /* Initialize the signal handler. */ - sig_init(); - - /* Initialize the fd table. */ - fd_init(); - - /* Start the scheduler */ - machdep_set_thread_timer(&(pthread_run->machdep_data)); -#ifdef M_UNIX - machdep_sys_init(); -#endif - return; - } - PANIC(); -} |