2f533901e325d6af46ffac4f9d7622c4c0ca8a89
[kopensolaris-gnu/glibc.git] / nptl / sysdeps / unix / sysv / solaris2 / kopensolaris-gnu / pthread_mutex_destroy.c
1 /* Copyright (C) 2002, 2003, 2005, 2006, 2008 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
4    OpenSolaris bits contributed by David Bartley
5     <dtbartle@csclub.uwaterloo.ca>, 2008.
6
7    The GNU C Library is free software; you can redistribute it and/or
8    modify it under the terms of the GNU Lesser General Public
9    License as published by the Free Software Foundation; either
10    version 2.1 of the License, or (at your option) any later version.
11
12    The GNU C Library is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    Lesser General Public License for more details.
16
17    You should have received a copy of the GNU Lesser General Public
18    License along with the GNU C Library; if not, write to the Free
19    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20    02111-1307 USA.  */
21
22 #include <string.h>
23 #include <pthreadP.h>
24 #include <synch_priv.h>
25
26
27 int
28 __pthread_mutex_destroy (mutex)
29      pthread_mutex_t *mutex;
30 {
31   if (mutex->mutex_lockbyte != LOCKBYTE_UNSET ||
32       mutex->mutex_cond_waiters > 0)
33     return EBUSY;
34
35   if (mutex->mutex_type & LOCK_ROBUST)
36     memset (mutex, 0, sizeof(mutex_t));
37   else
38     mutex->mutex_magic = -1;
39
40   return 0;
41 }
42 strong_alias (__pthread_mutex_destroy, pthread_mutex_destroy)
43 INTDEF(__pthread_mutex_destroy)