implement pthread_condattr_* interfaces
authorRich Felker <dalias@aerifal.cx>
Mon, 7 Mar 2011 21:20:12 +0000 (16:20 -0500)
committerRich Felker <dalias@aerifal.cx>
Mon, 7 Mar 2011 21:20:12 +0000 (16:20 -0500)
note that, while the attributes are stored, they are not used in
pthread_cond_init yet.

src/thread/pthread_condattr_destroy.c [new file with mode: 0644]
src/thread/pthread_condattr_getclock.c [new file with mode: 0644]
src/thread/pthread_condattr_getpshared.c [new file with mode: 0644]
src/thread/pthread_condattr_init.c [new file with mode: 0644]
src/thread/pthread_condattr_setclock.c [new file with mode: 0644]
src/thread/pthread_condattr_setpshared.c [new file with mode: 0644]

diff --git a/src/thread/pthread_condattr_destroy.c b/src/thread/pthread_condattr_destroy.c
new file mode 100644 (file)
index 0000000..c54ec41
--- /dev/null
@@ -0,0 +1,6 @@
+#include "pthread_impl.h"
+
+int pthread_condattr_destroy(pthread_condattr_t *a)
+{
+       return 0;
+}
diff --git a/src/thread/pthread_condattr_getclock.c b/src/thread/pthread_condattr_getclock.c
new file mode 100644 (file)
index 0000000..a77cc3e
--- /dev/null
@@ -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;
+}
diff --git a/src/thread/pthread_condattr_getpshared.c b/src/thread/pthread_condattr_getpshared.c
new file mode 100644 (file)
index 0000000..b620976
--- /dev/null
@@ -0,0 +1,7 @@
+#include "pthread_impl.h"
+
+int pthread_condattr_getpshared(const pthread_condattr_t *a, int *pshared)
+{
+       *pshared = *a>>31;
+       return 0;
+}
diff --git a/src/thread/pthread_condattr_init.c b/src/thread/pthread_condattr_init.c
new file mode 100644 (file)
index 0000000..6d09ac1
--- /dev/null
@@ -0,0 +1,7 @@
+#include "pthread_impl.h"
+
+int pthread_condattr_init(pthread_condattr_t *a)
+{
+       memset(a, 0, sizeof *a);
+       return 0;
+}
diff --git a/src/thread/pthread_condattr_setclock.c b/src/thread/pthread_condattr_setclock.c
new file mode 100644 (file)
index 0000000..bf74552
--- /dev/null
@@ -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;
+}
diff --git a/src/thread/pthread_condattr_setpshared.c b/src/thread/pthread_condattr_setpshared.c
new file mode 100644 (file)
index 0000000..c0cc1ef
--- /dev/null
@@ -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;
+}