/[pcsx2_0.9.7]/trunk/3rdparty/w32pthreads/ptw32_processTerminate.c
ViewVC logotype

Annotation of /trunk/3rdparty/w32pthreads/ptw32_processTerminate.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10 - (hide annotations) (download)
Mon Sep 6 11:40:06 2010 UTC (9 years, 9 months ago) by william
File MIME type: text/plain
File size: 3498 byte(s)
exported r3113 from ./upstream/trunk
1 william 10 /*
2     * ptw32_processTerminate.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 "ptw32pch.h"
39    
40     void
41     ptw32_processTerminate (void)
42     /*
43     * ------------------------------------------------------
44     * DOCPRIVATE
45     * This function performs process wide termination for
46     * the pthread library.
47     *
48     * PARAMETERS
49     * N/A
50     *
51     * DESCRIPTION
52     * This function performs process wide termination for
53     * the pthread library.
54     * This routine sets the global variable
55     * ptw32_processInitialized to FALSE
56     *
57     * RESULTS
58     * N/A
59     *
60     * ------------------------------------------------------
61     */
62     {
63     if (ptw32_processInitialized)
64     {
65     ptw32_thread_t * tp, * tpNext;
66    
67     if (ptw32_selfThreadKey != NULL)
68     {
69     /*
70     * Release ptw32_selfThreadKey
71     */
72     pthread_key_delete (ptw32_selfThreadKey);
73    
74     ptw32_selfThreadKey = NULL;
75     }
76    
77     if (ptw32_cleanupKey != NULL)
78     {
79     /*
80     * Release ptw32_cleanupKey
81     */
82     pthread_key_delete (ptw32_cleanupKey);
83    
84     ptw32_cleanupKey = NULL;
85     }
86    
87     EnterCriticalSection (&ptw32_thread_reuse_lock);
88    
89     tp = ptw32_threadReuseTop;
90     while (tp != PTW32_THREAD_REUSE_EMPTY)
91     {
92     tpNext = tp->prevReuse;
93     free (tp);
94     tp = tpNext;
95     }
96    
97     LeaveCriticalSection (&ptw32_thread_reuse_lock);
98    
99     /*
100     * Destroy the global locks and other objects.
101     */
102     DeleteCriticalSection (&ptw32_spinlock_test_init_lock);
103     DeleteCriticalSection (&ptw32_rwlock_test_init_lock);
104     DeleteCriticalSection (&ptw32_cond_test_init_lock);
105     DeleteCriticalSection (&ptw32_cond_list_lock);
106     DeleteCriticalSection (&ptw32_mutex_test_init_lock);
107     DeleteCriticalSection (&ptw32_thread_reuse_lock);
108    
109     ptw32_processInitialized = PTW32_FALSE;
110     }
111    
112     } /* processTerminate */

  ViewVC Help
Powered by ViewVC 1.1.22