| /* |
| * Copyright (c) 2023, Meta |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <errno.h> |
| #include <threads.h> |
| |
| #include <zephyr/kernel.h> |
| #include <zephyr/posix/pthread.h> |
| |
| int tss_create(tss_t *key, tss_dtor_t destructor) |
| { |
| switch (pthread_key_create(key, destructor)) { |
| case 0: |
| return thrd_success; |
| case EAGAIN: |
| return thrd_busy; |
| case ENOMEM: |
| return thrd_nomem; |
| default: |
| return thrd_error; |
| } |
| } |
| |
| void *tss_get(tss_t key) |
| { |
| return pthread_getspecific(key); |
| } |
| |
| int tss_set(tss_t key, void *val) |
| { |
| switch (pthread_setspecific(key, val)) { |
| case 0: |
| return thrd_success; |
| case ENOMEM: |
| return thrd_nomem; |
| default: |
| return thrd_error; |
| } |
| } |
| |
| void tss_delete(tss_t key) |
| { |
| (void)pthread_key_delete(key); |
| } |