| /* |
| * Copyright (c) 2018 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_POSIX_PTHREAD_KEY_H_ |
| #define ZEPHYR_INCLUDE_POSIX_PTHREAD_KEY_H_ |
| |
| #ifdef CONFIG_PTHREAD_IPC |
| #include <sys/slist.h> |
| #include <zephyr/types.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef uint32_t pthread_once_t; |
| |
| /* pthread_key */ |
| typedef void *pthread_key_t; |
| |
| typedef struct pthread_key_obj { |
| /* List of pthread_key_data objects that contain thread |
| * specific data for the key |
| */ |
| sys_slist_t key_data_l; |
| |
| /* Optional destructor that is passed to pthread_key_create() */ |
| void (*destructor)(void *); |
| } pthread_key_obj; |
| |
| typedef struct pthread_thread_data { |
| sys_snode_t node; |
| |
| /* Key and thread specific data passed to pthread_setspecific() */ |
| pthread_key_obj *key; |
| void *spec_data; |
| } pthread_thread_data; |
| |
| typedef struct pthread_key_data { |
| sys_snode_t node; |
| pthread_thread_data thread_data; |
| } pthread_key_data; |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* CONFIG_PTHREAD_IPC */ |
| |
| #endif /* ZEPHYR_INCLUDE_POSIX_PTHREAD_KEY_H_*/ |