diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index e413fe18ca..c0388217ff 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,9 @@ +2006-11-17 Joel Sherrill + + * posix/src/keygetspecific.c, posix/src/keysetspecific.c: Correct + indexing of key data to use api and index NOT class and index. + Class is always 1. + 2006-11-16 Ralf Corsépius * configure.ac: Remove RTEMS_AMPOLISH3. diff --git a/cpukit/posix/src/keygetspecific.c b/cpukit/posix/src/keygetspecific.c index ee6912022c..01e5549512 100644 --- a/cpukit/posix/src/keygetspecific.c +++ b/cpukit/posix/src/keygetspecific.c @@ -26,8 +26,8 @@ void *pthread_getspecific( ) { register POSIX_Keys_Control *the_key; + uint32_t api; uint32_t index; - uint32_t class; Objects_Locations location; void *key_data; @@ -37,9 +37,9 @@ void *pthread_getspecific( 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 ]; + api = _Objects_Get_API( _Thread_Executing->Object.id ); + index = _Objects_Get_index( _Thread_Executing->Object.id ); + key_data = (void *) the_key->Values[ api ][ index ]; _Thread_Enable_dispatch(); return key_data; } diff --git a/cpukit/posix/src/keysetspecific.c b/cpukit/posix/src/keysetspecific.c index 30f10a06b4..63370b4adf 100644 --- a/cpukit/posix/src/keysetspecific.c +++ b/cpukit/posix/src/keysetspecific.c @@ -27,8 +27,8 @@ int pthread_setspecific( ) { register POSIX_Keys_Control *the_key; + uint32_t api; uint32_t index; - uint32_t class; Objects_Locations location; the_key = _POSIX_Keys_Get( key, &location ); @@ -37,9 +37,9 @@ int pthread_setspecific( case OBJECTS_REMOTE: /* should never happen */ return EINVAL; case OBJECTS_LOCAL: + api = _Objects_Get_API( _Thread_Executing->Object.id ); index = _Objects_Get_index( _Thread_Executing->Object.id ); - class = _Objects_Get_class( _Thread_Executing->Object.id ); - the_key->Values[ class ][ index ] = (void *) value; + the_key->Values[ api ][ index ] = (void *) value; _Thread_Enable_dispatch(); return 0; }