Return one-based key so that user can check if the key is ever allocated

in the first place.

Initial patch submitted by: phk
This commit is contained in:
davidxu 2013-05-16 03:01:04 +00:00
parent e34342dafe
commit 3eb907a897

View File

@ -70,7 +70,7 @@ _pthread_key_create(pthread_key_t *key, void (*destructor) (void *))
/* Unlock the key table: */
THR_LOCK_RELEASE(curthread, &_keytable_lock);
*key = i;
*key = i + 1;
return (0);
}
@ -81,9 +81,10 @@ _pthread_key_create(pthread_key_t *key, void (*destructor) (void *))
}
int
_pthread_key_delete(pthread_key_t key)
_pthread_key_delete(pthread_key_t userkey)
{
struct pthread *curthread = _get_curthread();
int key = userkey - 1;
int ret = 0;
if ((unsigned int)key < PTHREAD_KEYS_MAX) {
@ -178,9 +179,10 @@ pthread_key_allocate_data(void)
}
int
_pthread_setspecific(pthread_key_t key, const void *value)
_pthread_setspecific(pthread_key_t userkey, const void *value)
{
struct pthread *pthread;
pthread_key_t key = userkey - 1;
int ret = 0;
/* Point to the running thread: */
@ -209,9 +211,10 @@ _pthread_setspecific(pthread_key_t key, const void *value)
}
void *
_pthread_getspecific(pthread_key_t key)
_pthread_getspecific(pthread_key_t userkey)
{
struct pthread *pthread;
pthread_key_t key = userkey - 1;
const void *data;
/* Point to the running thread: */