]> pd.if.org Git - pdclib/blob - platform/win32/functions/_PDCLIB/_PDCLIB_runTlsCallbacks.c
7dcf7a69846874579d6a29c7db35aaa33bab4e7a
[pdclib] / platform / win32 / functions / _PDCLIB / _PDCLIB_runTlsCallbacks.c
1 #include <stddef.h>\r
2 #include <windows.h>\r
3 \r
4 #ifndef REGTEST\r
5 extern PIMAGE_TLS_CALLBACK __crt_xl_start__;\r
6 #ifdef __GNUC__\r
7 __attribute__((section(".CRT$XLZZZ")))\r
8 #else\r
9 __declspec(allocate(".CRT$XLZZZ")) \r
10 #endif\r
11 PIMAGE_TLS_CALLBACK __crt_xl_end__ = NULL;\r
12 \r
13 /* Runs all TLS callbacks registered in the executable\r
14  */\r
15 \r
16 void NTAPI _PDCLIB_runTlsCallbacks(void * image, DWORD reason, PVOID pv);\r
17 void NTAPI _PDCLIB_runTlsCallbacks(void * image, DWORD reason, PVOID pv)\r
18 {\r
19     PIMAGE_TLS_CALLBACK * pcb = &__crt_xl_start__;\r
20 \r
21     while(*pcb) (*(pcb++))(image, reason, pv);\r
22 }\r
23 #endif\r
24 \r
25 #ifdef TEST\r
26 #include <_PDCLIB_test.h>\r
27 \r
28 /* Tested in tss_get.c */\r
29 int main( void )\r
30 {\r
31     return TEST_RESULTS;\r
32 }\r
33 \r
34 #endif