thr_rwlockattr.c revision 112918
1101099Srwatson/*- 2166533Srwatson * Copyright (c) 1998 Alex Nash 3140628Srwatson * All rights reserved. 4172930Srwatson * 5101099Srwatson * Redistribution and use in source and binary forms, with or without 6101099Srwatson * modification, are permitted provided that the following conditions 7101099Srwatson * are met: 8101099Srwatson * 1. Redistributions of source code must retain the above copyright 9140628Srwatson * notice, this list of conditions and the following disclaimer. 10140628Srwatson * 2. Redistributions in binary form must reproduce the above copyright 11140628Srwatson * notice, this list of conditions and the following disclaimer in the 12140628Srwatson * documentation and/or other materials provided with the distribution. 13101099Srwatson * 14172930Srwatson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15172930Srwatson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16172930Srwatson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17101099Srwatson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18101099Srwatson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19101099Srwatson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20101099Srwatson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21101099Srwatson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22101099Srwatson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23101099Srwatson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24101099Srwatson * SUCH DAMAGE. 25101099Srwatson * 26101099Srwatson * $FreeBSD: head/lib/libthr/thread/thr_rwlockattr.c 112918 2003-04-01 03:46:29Z jeff $ 27101099Srwatson */ 28101099Srwatson 29101099Srwatson#include <errno.h> 30101099Srwatson#include <stdlib.h> 31101099Srwatson 32101099Srwatson#include <pthread.h> 33101099Srwatson#include "thr_private.h" 34101099Srwatson 35101099Srwatson__weak_reference(_pthread_rwlockattr_destroy, pthread_rwlockattr_destroy); 36101099Srwatson__weak_reference(_pthread_rwlockattr_getpshared, pthread_rwlockattr_getpshared); 37101099Srwatson__weak_reference(_pthread_rwlockattr_init, pthread_rwlockattr_init); 38101099Srwatson__weak_reference(_pthread_rwlockattr_setpshared, pthread_rwlockattr_setpshared); 39101099Srwatson 40101099Srwatsonint 41101099Srwatson_pthread_rwlockattr_destroy(pthread_rwlockattr_t *rwlockattr) 42101099Srwatson{ 43168951Srwatson pthread_rwlockattr_t prwlockattr; 44101099Srwatson 45101099Srwatson if (rwlockattr == NULL) 46101099Srwatson return(EINVAL); 47101099Srwatson 48101099Srwatson prwlockattr = *rwlockattr; 49105988Srwatson 50101099Srwatson if (prwlockattr == NULL) 51164184Strhodes return(EINVAL); 52103183Sbde 53145076Scsjp free(prwlockattr); 54101099Srwatson 55168951Srwatson return(0); 56101099Srwatson} 57115497Srwatson 58101099Srwatsonint 59101099Srwatson_pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *rwlockattr, 60101099Srwatson int *pshared) 61105696Srwatson{ 62101099Srwatson *pshared = (*rwlockattr)->pshared; 63101099Srwatson 64101099Srwatson return(0); 65101099Srwatson} 66101099Srwatson 67150340Sphkint 68101099Srwatson_pthread_rwlockattr_init(pthread_rwlockattr_t *rwlockattr) 69140628Srwatson{ 70140628Srwatson pthread_rwlockattr_t prwlockattr; 71140628Srwatson 72101099Srwatson if (rwlockattr == NULL) 73101099Srwatson return(EINVAL); 74101099Srwatson 75101099Srwatson prwlockattr = (pthread_rwlockattr_t) 76101099Srwatson malloc(sizeof(struct pthread_rwlockattr)); 77101099Srwatson 78101099Srwatson if (prwlockattr == NULL) 79101099Srwatson return(ENOMEM); 80101099Srwatson 81122875Srwatson prwlockattr->pshared = PTHREAD_PROCESS_PRIVATE; 82101099Srwatson *rwlockattr = prwlockattr; 83101099Srwatson 84122879Srwatson return(0); 85101099Srwatson} 86101099Srwatson 87165469Srwatsonint 88101099Srwatson_pthread_rwlockattr_setpshared(pthread_rwlockattr_t *rwlockattr, int pshared) 89101099Srwatson{ 90101099Srwatson /* Only PTHREAD_PROCESS_PRIVATE is supported. */ 91101099Srwatson if (pshared != PTHREAD_PROCESS_PRIVATE) 92101099Srwatson return(EINVAL); 93101099Srwatson 94101099Srwatson (*rwlockattr)->pshared = pshared; 95172955Srwatson 96105988Srwatson return(0); 97172955Srwatson} 98105988Srwatson 99172955Srwatson