19 |
|
|
20 |
#include <pthread.h> |
#include <pthread.h> |
21 |
#include <assert.h> |
#include <assert.h> |
22 |
|
#include <string.h> |
23 |
|
|
24 |
#include <pt-internal.h> |
#include <pt-internal.h> |
25 |
|
|
27 |
pthread_cond_init (pthread_cond_t *cond, |
pthread_cond_init (pthread_cond_t *cond, |
28 |
const pthread_condattr_t *attr) |
const pthread_condattr_t *attr) |
29 |
{ |
{ |
30 |
if (attr) |
*cond = (pthread_cond_t) __PTHREAD_COND_INITIALIZER; |
|
assert (attr->pshared == PTHREAD_PROCESS_PRIVATE); |
|
31 |
|
|
32 |
*cond = __PTHREAD_COND_INITIALIZER; |
if (! attr |
33 |
|
|| memcmp (attr, &__pthread_default_condattr, sizeof (*attr) == 0)) |
34 |
|
/* Use the default attributes. */ |
35 |
|
return 0; |
36 |
|
|
37 |
|
/* Non-default attributes. */ |
38 |
|
|
39 |
|
cond->__attr = malloc (sizeof *attr); |
40 |
|
if (! cond->__attr) |
41 |
|
return ENOMEM; |
42 |
|
|
43 |
|
*cond->__attr = *attr; |
44 |
return 0; |
return 0; |
45 |
} |
} |