1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
-
+
|
/*
* tclUnixNotify.c --
*
* This file contains the implementation of the select-based
* Unix-specific notifier, which is the lowest-level part of the
* Tcl event loop. This file works together with
* ../generic/tclNotify.c.
*
* Copyright (c) 1995-1997 Sun Microsystems, Inc.
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
* RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.1 2003/03/21 03:24:09 dgp Exp $
* RCS: @(#) $Id: tclUnixNotfy.c,v 1.11.2.2 2003/07/16 22:09:48 hobbs Exp $
*/
#include "tclInt.h"
#include "tclPort.h"
#include <signal.h>
extern TclStubs tclStubs;
|
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
|
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
|
-
+
+
|
NotifierThreadProc(clientData)
ClientData clientData; /* Not used. */
{
ThreadSpecificData *tsdPtr;
fd_mask masks[3*MASK_SIZE];
long *maskPtr = (long *)masks; /* masks[] cast to type long[] */
int fds[2];
int i, status, index, bit, numFdBits, found, receivePipe, word;
int i, status, index, bit, numFdBits, receivePipe;
long found, word;
struct timeval poll = {0., 0.}, *timePtr;
int maskSize = 3 * ((MASK_SIZE) / sizeof(long)) * sizeof(fd_mask);
char buf[2];
if (pipe(fds) != 0) {
panic("NotifierThreadProc: could not create trigger pipe.");
}
|