diff options
author | bje <bje> | 1998-07-13 15:14:34 +0000 |
---|---|---|
committer | bje <bje> | 1998-07-13 15:14:34 +0000 |
commit | 2368e752e25d30f04a7c2af4ceab7a62a3e562c3 (patch) | |
tree | e487a48be12af35274f0898d4e53c47ae2ab9431 /attr.c | |
parent | abdcb7b1675ff5ffc8189547b9b6f716aa5a231d (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.
Diffstat (limited to 'attr.c')
-rw-r--r-- | attr.c | 100 |
1 files changed, 100 insertions, 0 deletions
@@ -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; +} |