| 142 | } |
| 143 | |
| 144 | int thread_key_delete(thread_key_t key) { |
| 145 | int result = EINVAL; |
| 146 | if (key < THREAD_KEYS_MAX) { |
| 147 | uint64_t seq = thread_keys[key].seq; |
| 148 | if (!key_unused(seq) && __sync_bool_compare_and_swap(&thread_keys[key].seq, seq, seq + 1)) |
| 149 | /* We deleted a valid key by making the seq even again */ |
| 150 | result = 0; |
| 151 | } |
| 152 | return result; |
| 153 | } |
| 154 | |
| 155 | void deallocate_tls(void** tls_) { |
| 156 | size_t round = 0; |