thr_rwlockattr.c revision 256281
1122394Sharti/*- 2146525Sharti * Copyright (c) 1998 Alex Nash 3146525Sharti * All rights reserved. 4146525Sharti * 5122394Sharti * Redistribution and use in source and binary forms, with or without 6122394Sharti * modification, are permitted provided that the following conditions 7122394Sharti * are met: 8122394Sharti * 1. Redistributions of source code must retain the above copyright 9208483Suqs * notice, this list of conditions and the following disclaimer. 10133211Sharti * 2. Redistributions in binary form must reproduce the above copyright 11133211Sharti * notice, this list of conditions and the following disclaimer in the 12133211Sharti * documentation and/or other materials provided with the distribution. 13133211Sharti * 14133211Sharti * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15133211Sharti * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16122394Sharti * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17122394Sharti * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18122394Sharti * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19133211Sharti * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20133211Sharti * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21133211Sharti * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22133211Sharti * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23133211Sharti * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24133211Sharti * SUCH DAMAGE. 25133211Sharti * 26133211Sharti * $FreeBSD: stable/10/lib/libthr/thread/thr_rwlockattr.c 214093 2010-10-20 02:34:02Z davidxu $ 27133211Sharti */ 28133211Sharti 29133211Sharti#include "namespace.h" 30133211Sharti#include <errno.h> 31122394Sharti#include <stdlib.h> 32150920Sharti#include <pthread.h> 33122394Sharti#include "un-namespace.h" 34216294Ssyrinx 35142810Sharti#include "thr_private.h" 36122394Sharti 37122394Sharti__weak_reference(_pthread_rwlockattr_destroy, pthread_rwlockattr_destroy); 38122394Sharti__weak_reference(_pthread_rwlockattr_getpshared, pthread_rwlockattr_getpshared); 39122394Sharti__weak_reference(_pthread_rwlockattr_init, pthread_rwlockattr_init); 40122394Sharti__weak_reference(_pthread_rwlockattr_setpshared, pthread_rwlockattr_setpshared); 41122394Sharti 42122394Shartiint 43122394Sharti_pthread_rwlockattr_destroy(pthread_rwlockattr_t *rwlockattr) 44122394Sharti{ 45122394Sharti pthread_rwlockattr_t prwlockattr; 46122394Sharti 47122394Sharti if (rwlockattr == NULL) 48122394Sharti return(EINVAL); 49122394Sharti 50146525Sharti prwlockattr = *rwlockattr; 51122394Sharti 52122394Sharti if (prwlockattr == NULL) 53122394Sharti return(EINVAL); 54122394Sharti 55216294Ssyrinx free(prwlockattr); 56216294Ssyrinx 57122394Sharti return(0); 58122394Sharti} 59122394Sharti 60122394Shartiint 61122394Sharti_pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *rwlockattr, 62122394Sharti int *pshared) 63122394Sharti{ 64122394Sharti *pshared = (*rwlockattr)->pshared; 65122394Sharti 66122394Sharti return(0); 67122394Sharti} 68122394Sharti 69122394Shartiint 70122394Sharti_pthread_rwlockattr_init(pthread_rwlockattr_t *rwlockattr) 71122394Sharti{ 72122394Sharti pthread_rwlockattr_t prwlockattr; 73122394Sharti 74122394Sharti if (rwlockattr == NULL) 75122394Sharti return(EINVAL); 76122394Sharti 77122394Sharti prwlockattr = (pthread_rwlockattr_t) 78122394Sharti malloc(sizeof(struct pthread_rwlockattr)); 79122394Sharti 80122394Sharti if (prwlockattr == NULL) 81122394Sharti return(ENOMEM); 82122394Sharti 83122394Sharti prwlockattr->pshared = PTHREAD_PROCESS_PRIVATE; 84122394Sharti *rwlockattr = prwlockattr; 85122394Sharti 86122394Sharti return(0); 87122394Sharti} 88122394Sharti 89122394Shartiint 90122394Sharti_pthread_rwlockattr_setpshared(pthread_rwlockattr_t *rwlockattr, int pshared) 91122394Sharti{ 92122394Sharti /* Only PTHREAD_PROCESS_PRIVATE is supported. */ 93122394Sharti if (pshared != PTHREAD_PROCESS_PRIVATE) 94122394Sharti return(EINVAL); 95146525Sharti 96146525Sharti (*rwlockattr)->pshared = pshared; 97122394Sharti 98122394Sharti return(0); 99122394Sharti} 100122394Sharti