summaryrefslogtreecommitdiffstats
path: root/generic/tclDecls.h
diff options
context:
space:
mode:
authorandreas_kupries <akupries@shaw.ca>2001-03-30 23:06:39 (GMT)
committerandreas_kupries <akupries@shaw.ca>2001-03-30 23:06:39 (GMT)
commit48f8dee3a1a0e24705f0e328314065e9dc602993 (patch)
tree54aac1cde138798340a664ebb66533625a892063 /generic/tclDecls.h
parent04bc231d0eaa06994bc6cab2b61b518e200fab0c (diff)
downloadtcl-48f8dee3a1a0e24705f0e328314065e9dc602993.zip
tcl-48f8dee3a1a0e24705f0e328314065e9dc602993.tar.gz
tcl-48f8dee3a1a0e24705f0e328314065e9dc602993.tar.bz2
2001-03-30 Andreas Kupries <andreas_kupries@users.sourceforge.net>
* All of the changes below belong to TIP #10 [Tcl I/O Enhancement: Thread-Aware Channels]. See also [Patch #403358] at SF. * generic/tclIO.h (struct ChannelState, line 236f): Extended the structure with a new field of type 'Tcl_ThreadId' to hold the id of the thread currently managing all channels with this state. Note: This structure is shared by all channels in a stack of transformations. * generic/tclIO.c (Tcl_CreateChannel, lines 1058-1065): Modified to store the Id of the current thread in the 'ChannelState' of the new channel. * generic/tclIO.c (Tcl_SpliceChannel, lines 2265-2270): Modified in the same manner as 'Tcl_CreateChannel' as the channel will be managed by the current thread afterward. * generic/tclIO.c (Tcl_GetChannelThread, lines 1478-1503): * generic/tcl.decls (Tcl_GetChannelThread, lines 1504-1506): New API function to retrieve the Id of the managing thread from a channel. Implementation and declaration. * generic/tclTest.c (TestChannelCmd, lines 4520-4532): Added subcommand 'mthread' to query a channel about its managing thread.
Diffstat (limited to 'generic/tclDecls.h')
-rw-r--r--generic/tclDecls.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/generic/tclDecls.h b/generic/tclDecls.h
index 6caae64..06e9b89 100644
--- a/generic/tclDecls.h
+++ b/generic/tclDecls.h
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclDecls.h,v 1.45 2001/03/26 22:16:54 dgp Exp $
+ * RCS: @(#) $Id: tclDecls.h,v 1.46 2001/03/30 23:06:39 andreas_kupries Exp $
*/
#ifndef _TCLDECLS
@@ -1350,6 +1350,9 @@ EXTERN char * Tcl_AttemptDbCkrealloc _ANSI_ARGS_((char * ptr,
/* 432 */
EXTERN int Tcl_AttemptSetObjLength _ANSI_ARGS_((
Tcl_Obj * objPtr, int length));
+/* 433 */
+EXTERN Tcl_ThreadId Tcl_GetChannelThread _ANSI_ARGS_((
+ Tcl_Channel channel));
typedef struct TclStubHooks {
struct TclPlatStubs *tclPlatStubs;
@@ -1850,6 +1853,7 @@ typedef struct TclStubs {
char * (*tcl_AttemptRealloc) _ANSI_ARGS_((char * ptr, unsigned int size)); /* 430 */
char * (*tcl_AttemptDbCkrealloc) _ANSI_ARGS_((char * ptr, unsigned int size, char * file, int line)); /* 431 */
int (*tcl_AttemptSetObjLength) _ANSI_ARGS_((Tcl_Obj * objPtr, int length)); /* 432 */
+ Tcl_ThreadId (*tcl_GetChannelThread) _ANSI_ARGS_((Tcl_Channel channel)); /* 433 */
} TclStubs;
#ifdef __cplusplus
@@ -3630,6 +3634,10 @@ extern TclStubs *tclStubsPtr;
#define Tcl_AttemptSetObjLength \
(tclStubsPtr->tcl_AttemptSetObjLength) /* 432 */
#endif
+#ifndef Tcl_GetChannelThread
+#define Tcl_GetChannelThread \
+ (tclStubsPtr->tcl_GetChannelThread) /* 433 */
+#endif
#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */