summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbje <bje>1998-07-13 15:14:34 +0000
committerbje <bje>1998-07-13 15:14:34 +0000
commit2368e752e25d30f04a7c2af4ceab7a62a3e562c3 (patch)
treee487a48be12af35274f0898d4e53c47ae2ab9431
parentabdcb7b1675ff5ffc8189547b9b6f716aa5a231d (diff)
1998-07-14 Ben Elliston <bje@cygnus.com>
* attr.c (pthread_attr_setstacksize): Implement. (pthread_attr_getstacksize): Likewise. (pthread_attr_setstackaddr): Likewise. (pthread_attr_getstackaddr): Likewise. (pthread_attr_init): Likewise. (pthread_attr_destroy): Likewise.
-rw-r--r--attr.c100
1 files changed, 100 insertions, 0 deletions
diff --git a/attr.c b/attr.c
new file mode 100644
index 0000000..a99cf53
--- /dev/null
+++ b/attr.c
@@ -0,0 +1,100 @@
+/*
+ * attr.c
+ *
+ * Description:
+ * This translation unit implements operations on thread attribute objects.
+ */
+
+#include "pthread.h"
+#include "implement.h"
+
+int
+pthread_attr_setstacksize(pthread_attr_t *attr,
+ size_t stacksize)
+{
+ /* Verify that the stack size is within range. */
+ if (stacksize < PTHREAD_STACK_MIN)
+ {
+ return EINVAL;
+ }
+
+ if (is_attr(attr) != 0)
+ {
+ return EINVAL;
+ }
+
+ /* Everything is okay. */
+ (_pthread_attr_t *) (attr->ptr)->stacksize = stacksize;
+ return 0;
+}
+
+int
+pthread_attr_getstacksize(const pthread_attr_t *attr,
+ size_t *stacksize)
+{
+ if (is_attr(attr) != 0)
+ {
+ return EINVAL;
+ }
+
+ /* Everything is okay. */
+ *stacksize = (_pthread_attr_t *) (attr->ptr)->stacksize;
+ return 0;
+}
+
+int
+pthread_attr_setstackaddr(pthread_attr_t *attr,
+ void *stackaddr)
+{
+ if ((is_attr(attr) != 0))
+ {
+ return EINVAL;
+ }
+
+ /* FIXME: it does not look like Win32 permits this. */
+ return ENOSYS;
+}
+
+int
+pthread_attr_getstackaddr(const pthread_attr_t *attr,
+ void **stackaddr)
+{
+ if ((is_attr(attr) != 0))
+ {
+ return EINVAL;
+ }
+
+ /* FIXME: it does not look like Win32 permits this. */
+ return ENOSYS;
+}
+
+int
+pthread_attr_init(pthread_attr_t *attr)
+{
+ if (attr == NULL)
+ {
+ /* This is disallowed. */
+ return EINVAL;
+ }
+
+ attr->ptr = malloc(sizeof(_pthread_attr_t));
+ if (attr->ptr == NULL)
+ {
+ return ENOMEM;
+ }
+
+ /* FIXME: Fill out the structure with default values. */
+ return 0;
+}
+
+int
+pthread_attr_destroy(pthread_attr_t *attr)
+{
+ if (is_attr(attr) != 0)
+ {
+ return EINVAL;
+ }
+
+ free (attr->ptr);
+ return 0;
+}