| ︙ | | |
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
-
+
-
+
|
#include <poll.h>
/*
* Static routines defined in this file.
*/
#ifdef NOTIFIER_SELECT
#ifdef TCL_THREADS
#if !defined(TCL_THREADS) || TCL_THREADS
static TCL_NORETURN void NotifierThreadProc(ClientData clientData);
#if defined(HAVE_PTHREAD_ATFORK)
static void AtForkChild(void);
#endif /* HAVE_PTHREAD_ATFORK */
#endif /* TCL_THREADS */
#endif /* NOTIFIER_SELECT */
static int FileHandlerEventProc(Tcl_Event *evPtr, int flags);
#ifdef NOTIFIER_SELECT
#if TCL_THREADS
#if !defined(TCL_THREADS) || TCL_THREADS
/*
*----------------------------------------------------------------------
*
* StartNotifierThread --
*
* Start a notfier thread and wait for the notifier pipe to be created.
*
|
| ︙ | | |
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
-
+
|
ClientData clientData)
{
if (tclNotifierHooks.alertNotifierProc) {
tclNotifierHooks.alertNotifierProc(clientData);
return;
} else {
#ifdef NOTIFIER_SELECT
#ifdef TCL_THREADS
#if !defined(TCL_THREADS) || TCL_THREADS
ThreadSpecificData *tsdPtr = clientData;
pthread_mutex_lock(¬ifierMutex);
tsdPtr->eventReady = 1;
# ifdef __CYGWIN__
PostMessageW(tsdPtr->hwnd, 1024, 0, 0);
|
| ︙ | | |
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
|
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
|
-
+
|
* TCL_SERVICE_NONE. */
{
if (tclNotifierHooks.serviceModeHookProc) {
tclNotifierHooks.serviceModeHookProc(mode);
return;
} else if (mode == TCL_SERVICE_ALL) {
#ifdef NOTIFIER_SELECT
#if TCL_THREADS
#if !defined(TCL_THREADS) || TCL_THREADS
StartNotifierThread("Tcl_ServiceModeHook");
#endif
#endif /* NOTIFIER_SELECT */
}
}
/*
|
| ︙ | | |
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
|
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
|
-
+
|
}
break;
}
return 1;
}
#ifdef NOTIFIER_SELECT
#ifdef TCL_THREADS
#if !defined(TCL_THREADS) || TCL_THREADS
/*
*----------------------------------------------------------------------
*
* AlertSingleThread --
*
* Notify a single thread that is waiting on a file descriptor to become
* readable or writable or to have an exception condition.
|
| ︙ | | |