Back to index

glibc  2.9
libc_pthread_init.c
Go to the documentation of this file.
00001 /* Copyright (C) 2002 Free Software Foundation, Inc.
00002    This file is part of the GNU C Library.
00003    Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
00004 
00005    The GNU C Library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Lesser General Public
00007    License as published by the Free Software Foundation; either
00008    version 2.1 of the License, or (at your option) any later version.
00009 
00010    The GNU C Library is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Lesser General Public License for more details.
00014 
00015    You should have received a copy of the GNU Lesser General Public
00016    License along with the GNU C Library; if not, write to the Free
00017    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00018    02111-1307 USA.  */
00019 
00020 #include <locale.h>
00021 #include <stdlib.h>
00022 #include <string.h>
00023 #include <tls.h>
00024 #include "internals.h"
00025 #include <sysdep-cancel.h>
00026 
00027 int *
00028 __libc_pthread_init (functions)
00029      const struct pthread_functions *functions;
00030 {
00031 #ifdef SHARED
00032   /* We copy the content of the variable pointed to by the FUNCTIONS
00033      parameter to one in libc.so since this means access to the array
00034      can be done with one memory access instead of two.  */
00035   memcpy (&__libc_pthread_functions, functions,
00036          sizeof (__libc_pthread_functions));
00037 #endif
00038 
00039 #if !(USE_TLS && HAVE___THREAD)
00040   /* Initialize thread-locale current locale to point to the global one.
00041      With __thread support, the variable's initializer takes care of this.  */
00042   __uselocale (LC_GLOBAL_LOCALE);
00043 #endif
00044 
00045   return &__libc_multiple_threads;
00046 }