/* * Copyright 2007, Ryan Leavengood, leavengood@gmail.com. * All rights reserved. Distributed under the terms of the MIT License. */ #include #include "pthread_private.h" #include int pthread_condattr_init(pthread_condattr_t *_condAttr) { pthread_condattr *attr; if (_condAttr == NULL) return B_BAD_VALUE; attr = (pthread_condattr *)malloc(sizeof(pthread_condattr)); if (attr == NULL) return B_NO_MEMORY; attr->process_shared = false; attr->clock_id = CLOCK_REALTIME; *_condAttr = attr; return B_OK; } int pthread_condattr_destroy(pthread_condattr_t *_condAttr) { pthread_condattr *attr; if (_condAttr == NULL || (attr = *_condAttr) == NULL) return B_BAD_VALUE; *_condAttr = NULL; free(attr); return B_OK; } int pthread_condattr_getpshared(const pthread_condattr_t *_condAttr, int *_processShared) { pthread_condattr *attr; if (_condAttr == NULL || (attr = *_condAttr) == NULL || _processShared == NULL) return B_BAD_VALUE; *_processShared = attr->process_shared ? PTHREAD_PROCESS_SHARED : PTHREAD_PROCESS_PRIVATE; return B_OK; } int pthread_condattr_setpshared(pthread_condattr_t *_condAttr, int processShared) { pthread_condattr *attr; if (_condAttr == NULL || (attr = *_condAttr) == NULL || processShared < PTHREAD_PROCESS_PRIVATE || processShared > PTHREAD_PROCESS_SHARED) return B_BAD_VALUE; attr->process_shared = processShared == PTHREAD_PROCESS_SHARED ? true : false; return B_OK; } int pthread_condattr_getclock(const pthread_condattr_t *_condAttr, clockid_t *_clockID) { pthread_condattr *attr; if (_condAttr == NULL || (attr = *_condAttr) == NULL || _clockID == NULL) return B_BAD_VALUE; *_clockID = attr->clock_id; return B_OK; } int pthread_condattr_setclock(pthread_condattr_t *_condAttr, clockid_t clockID) { pthread_condattr *attr; if (_condAttr == NULL || (attr = *_condAttr) == NULL || (clockID != CLOCK_REALTIME && clockID != CLOCK_MONOTONIC)) return B_BAD_VALUE; attr->clock_id = clockID; return B_OK; }