about summary refs log tree commit diff
path: root/src/thread
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-03-07 16:20:12 -0500
committerRich Felker <dalias@aerifal.cx>2011-03-07 16:20:12 -0500
commitb4d40e44e36f28cf5a52e9f0c12e622c3baf1657 (patch)
tree5d23cf8dc209bb1eacd31ebaa223465077e37cfa /src/thread
parent63b06c0e904fbdbc87b3e17d067b62afe9bb3dd1 (diff)
downloadmusl-b4d40e44e36f28cf5a52e9f0c12e622c3baf1657.tar.gz
musl-b4d40e44e36f28cf5a52e9f0c12e622c3baf1657.tar.xz
musl-b4d40e44e36f28cf5a52e9f0c12e622c3baf1657.zip
implement pthread_condattr_* interfaces
note that, while the attributes are stored, they are not used in
pthread_cond_init yet.
Diffstat (limited to 'src/thread')
-rw-r--r--src/thread/pthread_condattr_destroy.c6
-rw-r--r--src/thread/pthread_condattr_getclock.c7
-rw-r--r--src/thread/pthread_condattr_getpshared.c7
-rw-r--r--src/thread/pthread_condattr_init.c7
-rw-r--r--src/thread/pthread_condattr_setclock.c9
-rw-r--r--src/thread/pthread_condattr_setpshared.c9
6 files changed, 45 insertions, 0 deletions
diff --git a/src/thread/pthread_condattr_destroy.c b/src/thread/pthread_condattr_destroy.c
new file mode 100644
index 00000000..c54ec412
--- /dev/null
+++ b/src/thread/pthread_condattr_destroy.c
@@ -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
index 00000000..a77cc3e0
--- /dev/null
+++ b/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;
+}
diff --git a/src/thread/pthread_condattr_getpshared.c b/src/thread/pthread_condattr_getpshared.c
new file mode 100644
index 00000000..b620976c
--- /dev/null
+++ b/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;
+}
diff --git a/src/thread/pthread_condattr_init.c b/src/thread/pthread_condattr_init.c
new file mode 100644
index 00000000..6d09ac1e
--- /dev/null
+++ b/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;
+}
diff --git a/src/thread/pthread_condattr_setclock.c b/src/thread/pthread_condattr_setclock.c
new file mode 100644
index 00000000..bf745523
--- /dev/null
+++ b/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;
+}
diff --git a/src/thread/pthread_condattr_setpshared.c b/src/thread/pthread_condattr_setpshared.c
new file mode 100644
index 00000000..c0cc1ef9
--- /dev/null
+++ b/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;
+}