From 63edcf242a2cd5d53537bae95943b5fcd0eed5fe Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 2 Nov 1999 18:40:30 +0000 Subject: Split key.c into multiple files. --- cpukit/posix/src/keysetspecific.c | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 cpukit/posix/src/keysetspecific.c (limited to 'cpukit/posix/src/keysetspecific.c') diff --git a/cpukit/posix/src/keysetspecific.c b/cpukit/posix/src/keysetspecific.c new file mode 100644 index 0000000000..d66771a11a --- /dev/null +++ b/cpukit/posix/src/keysetspecific.c @@ -0,0 +1,43 @@ +/* + * $Id$ + */ + +#include +#include +#include +#include + +#include +#include +#include +#include + +/*PAGE + * + * 17.1.2 Thread-Specific Data Management, P1003.1c/Draft 10, p. 165 + */ + +int pthread_setspecific( + pthread_key_t key, + const void *value +) +{ + register POSIX_Keys_Control *the_key; + unsigned32 index; + unsigned32 class; + Objects_Locations location; + + the_key = _POSIX_Keys_Get( key, &location ); + switch ( location ) { + case OBJECTS_ERROR: + case OBJECTS_REMOTE: /* should never happen */ + return EINVAL; + case OBJECTS_LOCAL: + index = _Objects_Get_index( _Thread_Executing->Object.id ); + class = _Objects_Get_class( _Thread_Executing->Object.id ); + the_key->Values[ class ][ index ] = (void *) value; + _Thread_Enable_dispatch(); + return 0; + } + return POSIX_BOTTOM_REACHED(); +} -- cgit v1.2.3