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/keygetspecific.c | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 cpukit/posix/src/keygetspecific.c (limited to 'cpukit/posix/src/keygetspecific.c') diff --git a/cpukit/posix/src/keygetspecific.c b/cpukit/posix/src/keygetspecific.c new file mode 100644 index 0000000000..0ba560feb6 --- /dev/null +++ b/cpukit/posix/src/keygetspecific.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 + */ + +void *pthread_getspecific( + pthread_key_t key +) +{ + register POSIX_Keys_Control *the_key; + unsigned32 index; + unsigned32 class; + Objects_Locations location; + void *key_data; + + the_key = _POSIX_Keys_Get( key, &location ); + switch ( location ) { + case OBJECTS_ERROR: + case OBJECTS_REMOTE: /* should never happen */ + return NULL; + case OBJECTS_LOCAL: + index = _Objects_Get_index( _Thread_Executing->Object.id ); + class = _Objects_Get_class( _Thread_Executing->Object.id ); + key_data = (void *) the_key->Values[ class ][ index ]; + _Thread_Enable_dispatch(); + return key_data; + } + return (void *) POSIX_BOTTOM_REACHED(); +} -- cgit v1.2.3