Lines Matching defs:data
48 * temporarily put the thread data for non-current threads here.
89 struct stw_tls_data *data;
90 data = stw_tls_data_create(te.th32ThreadID);
91 if (data) {
93 data->next = g_pendingTlsData;
94 g_pendingTlsData = data;
117 struct stw_tls_data *data;
123 data = calloc(1, sizeof *data);
124 if (!data) {
128 data->dwThreadId = dwThreadId;
130 data->hCallWndProcHook = SetWindowsHookEx(WH_CALLWNDPROC,
134 if (data->hCallWndProcHook == NULL) {
138 return data;
141 free(data);
147 * Destroy the per-thread data/hook.
153 stw_tls_data_destroy(struct stw_tls_data *data)
155 assert(data);
156 if (!data) {
161 debug_printf("%s(0x%04lx)\n", __FUNCTION__, data->dwThreadId);
164 if (data->hCallWndProcHook) {
165 UnhookWindowsHookEx(data->hCallWndProcHook);
166 data->hCallWndProcHook = NULL;
169 free(data);
175 struct stw_tls_data *data;
181 data = stw_tls_data_create(GetCurrentThreadId());
182 if (!data) {
186 TlsSetValue(tlsIndex, data);
194 struct stw_tls_data *data;
200 data = (struct stw_tls_data *) TlsGetValue(tlsIndex);
201 if (data) {
204 /* See if there this thread's data in on the pending list */
205 data = stw_tls_lookup_pending_data(GetCurrentThreadId());
208 if (data) {
209 stw_tls_data_destroy(data);
222 struct stw_tls_data * data = g_pendingTlsData;
223 g_pendingTlsData = data->next;
224 stw_tls_data_destroy(data);
242 struct stw_tls_data *data = NULL;
247 data = *p_data;
252 *p_data = data->next;
253 data->next = NULL;
260 return data;
266 struct stw_tls_data *data;
272 data = (struct stw_tls_data *) TlsGetValue(tlsIndex);
273 if (!data) {
279 data = stw_tls_lookup_pending_data(dwCurrentThreadId);
281 if (!data) {
285 assert(!"Failed to find thread data for thread id");
291 data = stw_tls_data_create(dwCurrentThreadId);
292 if (!data) {
297 TlsSetValue(tlsIndex, data);
300 assert(data);
301 assert(data->dwThreadId = GetCurrentThreadId());
302 assert(data->next == NULL);
304 return data;