This source file includes following definitions.
- pthread_key_create
- pthread_setspecific
- pthread_getspecific
- pthread_key_delete
- pthread_key_create
- pthread_setspecific
- pthread_getspecific
- pthread_key_delete
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 #include <config.h>
  20 
  21 
  22 #include <pthread.h>
  23 
  24 #if (defined _WIN32 && ! defined __CYGWIN__) && USE_WINDOWS_THREADS
  25 # include "windows-tls.h"
  26 #else
  27 # include <stdlib.h>
  28 #endif
  29 
  30 #if (defined _WIN32 && ! defined __CYGWIN__) && USE_WINDOWS_THREADS
  31 
  32 
  33 int
  34 pthread_key_create (pthread_key_t *keyp, void (*destructor) (void *))
     
  35 {
  36   return glwthread_tls_key_create (keyp, destructor);
  37 }
  38 
  39 int
  40 pthread_setspecific (pthread_key_t key, const void *value)
     
  41 {
  42   return glwthread_tls_set (key, (void *) value);
  43 }
  44 
  45 void *
  46 pthread_getspecific (pthread_key_t key)
     
  47 {
  48   return glwthread_tls_get (key);
  49 }
  50 
  51 int
  52 pthread_key_delete (pthread_key_t key)
     
  53 {
  54   return glwthread_tls_key_delete (key);
  55 }
  56 
  57 #elif HAVE_PTHREAD_H
  58 
  59 
  60 #else
  61 
  62 
  63 int
  64 pthread_key_create (pthread_key_t *keyp, void (*destructor) (void *))
     
  65 {
  66   pthread_key_t key = (void **) malloc (sizeof (void *));
  67   if (key == NULL)
  68     return ENOMEM;
  69   *key = NULL;
  70   *keyp = key;
  71   return 0;
  72 }
  73 
  74 int
  75 pthread_setspecific (pthread_key_t key, const void *value)
     
  76 {
  77   *key = (void *) value;
  78   return 0;
  79 }
  80 
  81 void *
  82 pthread_getspecific (pthread_key_t key)
     
  83 {
  84   return *key;
  85 }
  86 
  87 int
  88 pthread_key_delete (pthread_key_t key)
     
  89 {
  90   free (key);
  91   return 0;
  92 }
  93 
  94 #endif