summaryrefslogtreecommitdiff
path: root/condvar.c
diff options
context:
space:
mode:
authorbje <bje>1998-07-12 15:07:25 +0000
committerbje <bje>1998-07-12 15:07:25 +0000
commit98d13090d6fcf0f1646e2c037c83745805455d0a (patch)
tree5e6f14bed4174655cf41b50c42b8ab967e60c88e /condvar.c
parentfcffe39c2af8374e7c994dac0b6bc0719c6a561f (diff)
1998-07-13 Ben Elliston <bje@cygnus.com>
* condvar.c (pthread_condattr_init): Implement. (pthread_condattr_destroy): Likewise. (pthread_condattr_setpshared): Likewise. (pthread_condattr_getpshared): Likewise.
Diffstat (limited to 'condvar.c')
-rw-r--r--condvar.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/condvar.c b/condvar.c
new file mode 100644
index 0000000..871f50d
--- /dev/null
+++ b/condvar.c
@@ -0,0 +1,65 @@
+/*
+ * condvar.c
+ *
+ * Description:
+ * This translation unit implements condition variables and their primitives.
+ */
+
+#include "pthread.h"
+
+int
+pthread_cond_init(pthread_condattr_t *attr)
+{
+ if (attr == NULL)
+ {
+ /* This is disallowed. */
+ return EINVAL;
+ }
+
+ attr->ptr = malloc(sizeof(_pthread_condattr_t));
+ if (attr->ptr == NULL)
+ {
+ return ENOMEM;
+ }
+
+ /* FIXME: fill out the structure with default values. */
+ return 0;
+}
+
+int
+pthread_condattr_destroy(pthread_condattr_t *attr)
+{
+ if (is_attr(attr) != 0)
+ {
+ return EINVAL;
+ }
+
+ free(attr->ptr);
+ return 0;
+}
+
+int
+pthread_condattr_setpshared(pthread_condattr_t *attr,
+ int pshared)
+{
+ if (is_attr(attr) != 0)
+ {
+ return EINVAL;
+ }
+
+ (_pthread_condattr_t *) (attr->ptr)->pshared = pshared;
+ return 0;
+}
+
+int
+pthread_condattr_getpshared(pthread_condattr_t *attr,
+ int *pshared)
+{
+ if (is_attr(attr) != 0)
+ {
+ return EINVAL;
+ }
+
+ *pshared = (_pthread_condattr_t *) (attr->ptr)->pshared;
+ return 0;
+}