Browse Source

implement pthread_condattr_* interfaces

note that, while the attributes are stored, they are not used in
pthread_cond_init yet.
Rich Felker 14 years ago
parent
commit
b4d40e44e3

+ 6 - 0
src/thread/pthread_condattr_destroy.c

@@ -0,0 +1,6 @@
+#include "pthread_impl.h"
+
+int pthread_condattr_destroy(pthread_condattr_t *a)
+{
+	return 0;
+}

+ 7 - 0
src/thread/pthread_condattr_getclock.c

@@ -0,0 +1,7 @@
+#include "pthread_impl.h"
+
+int pthread_condattr_getclock(const pthread_condattr_t *a, clockid_t *clk)
+{
+	*clk = *a & 0x7fffffff;
+	return 0;
+}

+ 7 - 0
src/thread/pthread_condattr_getpshared.c

@@ -0,0 +1,7 @@
+#include "pthread_impl.h"
+
+int pthread_condattr_getpshared(const pthread_condattr_t *a, int *pshared)
+{
+	*pshared = *a>>31;
+	return 0;
+}

+ 7 - 0
src/thread/pthread_condattr_init.c

@@ -0,0 +1,7 @@
+#include "pthread_impl.h"
+
+int pthread_condattr_init(pthread_condattr_t *a)
+{
+	memset(a, 0, sizeof *a);
+	return 0;
+}

+ 9 - 0
src/thread/pthread_condattr_setclock.c

@@ -0,0 +1,9 @@
+#include "pthread_impl.h"
+
+int pthread_condattr_setclock(pthread_condattr_t *a, clockid_t clk)
+{
+	if (clk < 0) return EINVAL;
+	*a &= 0x80000000;
+	*a |= clk;
+	return 0;
+}

+ 9 - 0
src/thread/pthread_condattr_setpshared.c

@@ -0,0 +1,9 @@
+#include "pthread_impl.h"
+
+int pthread_condattr_setpshared(pthread_condattr_t *a, int pshared)
+{
+	if (pshared > 1U) return EINVAL;
+	*a &= 0x7fffffff;
+	*a |= pshared<<31;
+	return 0;
+}