diff options
author | andreas_kupries <akupries@shaw.ca> | 2001-03-30 23:06:39 (GMT) |
---|---|---|
committer | andreas_kupries <akupries@shaw.ca> | 2001-03-30 23:06:39 (GMT) |
commit | 48f8dee3a1a0e24705f0e328314065e9dc602993 (patch) | |
tree | 54aac1cde138798340a664ebb66533625a892063 /generic/tclDecls.h | |
parent | 04bc231d0eaa06994bc6cab2b61b518e200fab0c (diff) | |
download | tcl-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.h | 10 |
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) */ |