123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #include <stdlib.h>
- #include "pthread.h"
- #include "implement.h"
- int
- pte_tkAssocCreate (pte_thread_t * sp, pthread_key_t key)
- {
- ThreadKeyAssoc *assoc;
-
- assoc = (ThreadKeyAssoc *) calloc (1, sizeof (*assoc));
- if (assoc == NULL)
- {
- return ENOMEM;
- }
- assoc->thread = sp;
- assoc->key = key;
-
- assoc->prevThread = NULL;
- assoc->nextThread = (ThreadKeyAssoc *) key->threads;
- if (assoc->nextThread != NULL)
- {
- assoc->nextThread->prevThread = assoc;
- }
- key->threads = (void *) assoc;
-
- assoc->prevKey = NULL;
- assoc->nextKey = (ThreadKeyAssoc *) sp->keys;
- if (assoc->nextKey != NULL)
- {
- assoc->nextKey->prevKey = assoc;
- }
- sp->keys = (void *) assoc;
- return (0);
- }
|