summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/libpthread/pthread_setspecific.c
blob: 78339c20b58a5fbfc796cb934c8578e32136d307 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <unistd.h>
#include <errno.h>

#include <pthread.h>
#include "thread_internal.h"

extern struct _thread_key __thread_keys[PTHREAD_KEYS_MAX];
int pthread_setspecific(pthread_key_t key, const void *value)
{
  int id;
  __THREAD_INIT();

  id=__find_thread_id(getpid());
  if ((key<PTHREAD_KEYS_MAX) && (__thread_keys[key].used)) {
    __thread_keys[key].tkd[id]=value;
    return 0;
  }
  (*__errno_location())=EINVAL;
  return -1;
}