/*-------------------------------------------------------------*/ /*************************************************************** * TSD : Thread Specific Data * ***************************************************************/ /*-------------------------------------------------------------*/ typedef struct netwib_thread_tsd netwib_thread_tsd; /*-------------------------------------------------------------*/ /* Name : netwib_thread_tsd_init Description : Initialize a tsd. Input parameter(s) : Input/output parameter(s) : *pptsd : netwib_thread_tsd initialized Output parameter(s) : Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_thread_tsd_init(netwib_thread_tsd **pptsd); /*-------------------------------------------------------------*/ /* Name : netwib_thread_tsd_close Description : Close a tsd. Input parameter(s) : Input/output parameter(s) : *pptsd : netwib_thread_tsd closed Output parameter(s) : Normal return values : NETWIB_ERR_OK : ok */ netwib_err netwib_thread_tsd_close(netwib_thread_tsd **pptsd); /*-------------------------------------------------------------*/ /* Types to control a netwib_thread_tsd */ typedef enum { NETWIB_THREAD_TSD_CTLTYPE_VALUE = 1 /* get/set value */ } netwib_thread_tsd_ctltype; netwib_err netwib_thread_tsd_ctl_set(netwib_thread_tsd *ptsd, netwib_thread_tsd_ctltype type, netwib_ptr p, netwib_uint32 ui); netwib_err netwib_thread_tsd_ctl_get(netwib_thread_tsd *ptsd, netwib_thread_tsd_ctltype type, netwib_ptr p, netwib_uint32 *pui); /*-------------------------------------------------------------*/ /* netwib_err f(netwib_thread_tsd *pthread_tsd, netwib_ptr ptr); */ #define netwib_thread_tsd_ctl_set_value(pthread_tsd,ptr) netwib_thread_tsd_ctl_set(pthread_tsd,NETWIB_THREAD_TSD_CTLTYPE_VALUE,ptr,0) /* netwib_err f(netwib_thread_tsd *pthread_tsd, netwib_ptr ptr); */ #define netwib_thread_tsd_ctl_get_value(pthread_tsd,ptr) netwib_thread_tsd_ctl_get(pthread_tsd,NETWIB_THREAD_TSD_CTLTYPE_VALUE,ptr,0)