- add sources.
[platform/framework/web/crosswalk.git] / src / native_client_sdk / src / libraries / third_party / pthreads-win32 / ptw32_processInitialize.c
1 /*
2  * ptw32_processInitialize.c
3  *
4  * Description:
5  * This translation unit implements routines which are private to
6  * the implementation and may be used throughout it.
7  *
8  * --------------------------------------------------------------------------
9  *
10  *      Pthreads-win32 - POSIX Threads Library for Win32
11  *      Copyright(C) 1998 John E. Bossom
12  *      Copyright(C) 1999,2005 Pthreads-win32 contributors
13  * 
14  *      Contact Email: rpj@callisto.canberra.edu.au
15  * 
16  *      The current list of contributors is contained
17  *      in the file CONTRIBUTORS included with the source
18  *      code distribution. The list can also be seen at the
19  *      following World Wide Web location:
20  *      http://sources.redhat.com/pthreads-win32/contributors.html
21  * 
22  *      This library is free software; you can redistribute it and/or
23  *      modify it under the terms of the GNU Lesser General Public
24  *      License as published by the Free Software Foundation; either
25  *      version 2 of the License, or (at your option) any later version.
26  * 
27  *      This library is distributed in the hope that it will be useful,
28  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
29  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
30  *      Lesser General Public License for more details.
31  * 
32  *      You should have received a copy of the GNU Lesser General Public
33  *      License along with this library in the file COPYING.LIB;
34  *      if not, write to the Free Software Foundation, Inc.,
35  *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
36  */
37
38 #include "pthread.h"
39 #include "implement.h"
40
41
42 int
43 ptw32_processInitialize (void)
44      /*
45       * ------------------------------------------------------
46       * DOCPRIVATE
47       *      This function performs process wide initialization for
48       *      the pthread library.
49       *
50       * PARAMETERS
51       *      N/A
52       *
53       * DESCRIPTION
54       *      This function performs process wide initialization for
55       *      the pthread library.
56       *      If successful, this routine sets the global variable
57       *      ptw32_processInitialized to TRUE.
58       *
59       * RESULTS
60       *              TRUE    if successful,
61       *              FALSE   otherwise
62       *
63       * ------------------------------------------------------
64       */
65 {
66   if (ptw32_processInitialized)
67     {
68       /* 
69        * Ignore if already initialized. this is useful for 
70        * programs that uses a non-dll pthread
71        * library. Such programs must call ptw32_processInitialize() explicitly,
72        * since this initialization routine is automatically called only when
73        * the dll is loaded.
74        */
75       return PTW32_TRUE;
76     }
77
78   ptw32_processInitialized = PTW32_TRUE;
79
80   /*
81    * Initialize Keys
82    */
83   if ((pthread_key_create (&ptw32_selfThreadKey, NULL) != 0) ||
84       (pthread_key_create (&ptw32_cleanupKey, NULL) != 0))
85     {
86
87       ptw32_processTerminate ();
88     }
89
90   return (ptw32_processInitialized);
91
92 }                               /* processInitialize */