static void destroyThreadSpecificData (AsyncThreadSpecificData *tsd) { if (tsd) { asyncDeallocateWaitData(tsd->waitData); asyncDeallocateAlarmData(tsd->alarmData); asyncDeallocateTaskData(tsd->taskData); asyncDeallocateIoData(tsd->ioData); #ifdef ASYNC_CAN_HANDLE_SIGNALS asyncDeallocateSignalData(tsd->signalData); #endif /* ASYNC_CAN_HANDLE_SIGNALS */ free(tsd); } }
static THREAD_SPECIFIC_DATA_DESTROY(tsdAsync) { AsyncThreadSpecificData *tsd = data; if (tsd) { asyncDeallocateWaitData(tsd->waitData); asyncDeallocateAlarmData(tsd->alarmData); asyncDeallocateTaskData(tsd->taskData); asyncDeallocateIoData(tsd->ioData); #ifdef ASYNC_CAN_HANDLE_SIGNALS asyncDeallocateSignalData(tsd->signalData); #endif /* ASYNC_CAN_HANDLE_SIGNALS */ free(tsd); } }