|  | /* | 
|  | * 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_*/ |