1/* $OpenBSD: rthread_rwlockattr.c,v 1.2 2012/02/15 04:58:42 guenther Exp $ */ 2/* 3 * Copyright (c) 2004,2005 Ted Unangst <tedu@openbsd.org> 4 * All Rights Reserved. 5 * 6 * Permission to use, copy, modify, and distribute this software for any 7 * purpose with or without fee is hereby granted, provided that the above 8 * copyright notice and this permission notice appear in all copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 */ 18/* 19 * rwlock attributes 20 */ 21 22 23#include <stdlib.h> 24#include <unistd.h> 25#include <errno.h> 26 27#include <pthread.h> 28 29#include "rthread.h" 30 31int 32pthread_rwlockattr_init(pthread_rwlockattr_t *attrp) 33{ 34 pthread_rwlockattr_t attr; 35 36 attr = calloc(1, sizeof(*attr)); 37 if (!attr) 38 return (errno); 39 attr->pshared = PTHREAD_PROCESS_PRIVATE; 40 *attrp = attr; 41 42 return (0); 43} 44 45int 46pthread_rwlockattr_destroy(pthread_rwlockattr_t *attrp) 47{ 48 free(*attrp); 49 *attrp = NULL; 50 51 return (0); 52} 53 54int 55pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *attrp, int *pshared) 56{ 57 *pshared = (*attrp)->pshared; 58 59 return (0); 60} 61 62int 63pthread_rwlockattr_setpshared(pthread_rwlockattr_t *attrp, int pshared) 64{ 65 /* only PTHREAD_PROCESS_PRIVATE is supported */ 66 if (pshared != PTHREAD_PROCESS_PRIVATE) 67 return (EINVAL); 68 69 (*attrp)->pshared = pshared; 70 71 return (0); 72} 73