@@ -142,25 +142,22 @@ pthread_t _pthread_data_create(void)
142
142
}
143
143
144
144
/**
145
- * @brief Create and initialize a new thread data structure with index allocation
145
+ * @brief Destroy thread local storage item at specified index
146
146
*
147
- * This function allocates memory for a new thread data structure, initializes its default state,
148
- * and registers it in the global thread table. Uses spinlock synchronization to ensure safe
149
- * access to the global thread table in multi-threaded environments.
147
+ * This function cleans up thread-local storage data by:
148
+ * 1. Checking if the key at given index is active
149
+ * 2. If TLS data exists and a destructor is registered, invoking the destructor
150
+ * 3. Properly releasing resources associated with the TLS slot
150
151
*
151
- * @return Allocated index value of type pthread_t
152
- * - Returns valid index (0~PTHREAD_NUM_MAX-1) on successful allocation
153
- * - Returns PTHREAD_NUM_MAX when memory allocation fails or no space available in thread table
152
+ * @param index Index into the thread keys array (0 to PTHREAD_KEY_MAX-1)
153
+ * @param ptd Pointer to thread data structure containing TLS information
154
154
*
155
155
* @note
156
- * - Protects global thread table access with spinlock to prevent data races
157
- * - Uses sequential search to find first available slot in thread table
158
- * - Frees allocated memory and returns error when no available slots
159
- * - Initializes thread data with default states:
160
- * - Cancellation disabled (PTHREAD_CANCEL_DISABLE)
161
- * - Deferred cancellation type (PTHREAD_CANCEL_DEFERRED)
162
- * - Magic number validation (PTHREAD_MAGIC) for structure integrity
163
- * - Explicitly clears magic number before freeing memory to prevent reuse
156
+ * - Relies on external spinlock protection when accessing shared data
157
+ * - Only processes valid keys that have been initialized
158
+ * - Safely handles NULL pointers and missing destructors
159
+ * - Designed to be called during thread cleanup or explicit TLS destruction
160
+ * - Matches POSIX thread standard requirements for TLS destructor invocation
164
161
*/
165
162
static inline void _destroy_item (int index , _pthread_data_t * ptd )
166
163
{
0 commit comments