From 2368e752e25d30f04a7c2af4ceab7a62a3e562c3 Mon Sep 17 00:00:00 2001 From: bje Date: Mon, 13 Jul 1998 15:14:34 +0000 Subject: 1998-07-14 Ben Elliston * 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. --- attr.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 attr.c (limited to 'attr.c') 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; +} -- cgit v1.2.3