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