1*75dc9675Sguenther /* $OpenBSD: rthread_rwlockattr.c,v 1.2 2012/02/15 04:58:42 guenther Exp $ */
271f897f1Sguenther /*
371f897f1Sguenther * Copyright (c) 2004,2005 Ted Unangst <tedu@openbsd.org>
471f897f1Sguenther * All Rights Reserved.
571f897f1Sguenther *
671f897f1Sguenther * Permission to use, copy, modify, and distribute this software for any
771f897f1Sguenther * purpose with or without fee is hereby granted, provided that the above
871f897f1Sguenther * copyright notice and this permission notice appear in all copies.
971f897f1Sguenther *
1071f897f1Sguenther * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1171f897f1Sguenther * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1271f897f1Sguenther * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1371f897f1Sguenther * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1471f897f1Sguenther * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1571f897f1Sguenther * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1671f897f1Sguenther * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1771f897f1Sguenther */
1871f897f1Sguenther /*
1971f897f1Sguenther * rwlock attributes
2071f897f1Sguenther */
2171f897f1Sguenther
2271f897f1Sguenther
2371f897f1Sguenther #include <stdlib.h>
2471f897f1Sguenther #include <unistd.h>
2571f897f1Sguenther #include <errno.h>
2671f897f1Sguenther
2771f897f1Sguenther #include <pthread.h>
2871f897f1Sguenther
2971f897f1Sguenther #include "rthread.h"
3071f897f1Sguenther
3171f897f1Sguenther int
pthread_rwlockattr_init(pthread_rwlockattr_t * attrp)3271f897f1Sguenther pthread_rwlockattr_init(pthread_rwlockattr_t *attrp)
3371f897f1Sguenther {
3471f897f1Sguenther pthread_rwlockattr_t attr;
3571f897f1Sguenther
3671f897f1Sguenther attr = calloc(1, sizeof(*attr));
3771f897f1Sguenther if (!attr)
3871f897f1Sguenther return (errno);
39*75dc9675Sguenther attr->pshared = PTHREAD_PROCESS_PRIVATE;
4071f897f1Sguenther *attrp = attr;
4171f897f1Sguenther
4271f897f1Sguenther return (0);
4371f897f1Sguenther }
4471f897f1Sguenther
4571f897f1Sguenther int
pthread_rwlockattr_destroy(pthread_rwlockattr_t * attrp)4671f897f1Sguenther pthread_rwlockattr_destroy(pthread_rwlockattr_t *attrp)
4771f897f1Sguenther {
4871f897f1Sguenther free(*attrp);
4971f897f1Sguenther *attrp = NULL;
5071f897f1Sguenther
5171f897f1Sguenther return (0);
5271f897f1Sguenther }
53*75dc9675Sguenther
54*75dc9675Sguenther int
pthread_rwlockattr_getpshared(const pthread_rwlockattr_t * attrp,int * pshared)55*75dc9675Sguenther pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *attrp, int *pshared)
56*75dc9675Sguenther {
57*75dc9675Sguenther *pshared = (*attrp)->pshared;
58*75dc9675Sguenther
59*75dc9675Sguenther return (0);
60*75dc9675Sguenther }
61*75dc9675Sguenther
62*75dc9675Sguenther int
pthread_rwlockattr_setpshared(pthread_rwlockattr_t * attrp,int pshared)63*75dc9675Sguenther pthread_rwlockattr_setpshared(pthread_rwlockattr_t *attrp, int pshared)
64*75dc9675Sguenther {
65*75dc9675Sguenther /* only PTHREAD_PROCESS_PRIVATE is supported */
66*75dc9675Sguenther if (pshared != PTHREAD_PROCESS_PRIVATE)
67*75dc9675Sguenther return (EINVAL);
68*75dc9675Sguenther
69*75dc9675Sguenther (*attrp)->pshared = pshared;
70*75dc9675Sguenther
71*75dc9675Sguenther return (0);
72*75dc9675Sguenther }
73