Thread Control Block OS/2 Warp V4.0

For TCB formats for other versions of OS/2 see:

Pointers

Locations VM Owner

Format

┌────────────────────┬──────┬──────┬────┬────────────────────────────────────────┐│Field NameOffsetLengthTypeDescription                             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBOrdinal          │+0    │2     │W   │Ordinal number of thread in PTDA        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBNumber           │+2    │2     │W   │Thread slot number                      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBForcedActions    │+4    │4     │D   │Bit vector of forced actions            │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpPTDA            │+8    │4     │D   │Pointer to the PTDA                     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTSD             │+c    │4     │D   │Pointer to thread swappable data        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBptib             │+10   │4     │D   │Pointer to thread info block            │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBNext         │+14   │4     │D   │forward link to next (active) TCB       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBcbStackMax       │+18   │4     │D   │Virtual size of stack object            │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBcbStackCur       │+1c   │4     │D   │Committed size of stack object          │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpStack           │+20   │4     │D   │Virtual base of stack                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpStack16Lo       │+24   │4     │D   │Virtual base of 16-bit stack            │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpStack16Hi       │+28   │4     │D   │Virtual limit of 16-bit stack           │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpLibiHead        │+2c   │4     │D   │Link to libi load data area             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpLibiCurr        │+30   │4     │D   │Link to libi load data area             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpLibiFree        │+34   │4     │D   │Link to libi free data area             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_pcriFrameType   │+38   │4     │D   │stack frame type                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_pFrameBase      │+3c   │4     │D   │stack frame base pointer                │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_hookheadLocal   │+40   │8     │D   │local context hook head                 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_phookOwnerHead  │+48   │4     │D   │linked list of hook blocks              │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpteKStackTCB0    │+4c   │4     │D   │KStack page 0 of TCB                    │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpteKStackTCB1    │+50   │4     │D   │KStack page 1 of TCB                    │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpteKStackTSD     │+54   │4     │D   │KStack TSD page                         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpteKStackPTDA0   │+58   │4     │D   │KStack page 0 of PTDA                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpteKStackPTDA1   │+5c   │4     │D   │KStack page 1 of PTDA                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpteKStackPTDA2   │+60   │4     │D   │KStack page 2 of PTDA                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBCurrTCB          │+64   │4     │D   │SS-relative offset of Current TCB       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBCurrTSD          │+68   │4     │D   │SS-relative offset of Current TSD       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBBiasTCB          │+6c   │4     │D   │stack-to-flat TCB conversion value      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBBiasTSD          │+70   │4     │D   │stack-to-flat TSD conversion value      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpDHRetAddr       │+74   │4     │D   │82818 Pointer to DHRouter return address│
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBTLMA             │+78   │80    │D   │Thread local memory area                │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBDMAAdd           │+f8   │4     │D   │User's I/O transfer address             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSecPos           │+fc   │4     │D   │Position of first sector accessed within│
│                    │      │      │    │file                                    │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBThisSFT          │+100  │4     │D   │pointer to SFT we're working with       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBValSec           │+104  │4     │D   │Number of valid (previously written)    │
│                    │      │      │    │sectors                                 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpRTCB            │+108  │4     │D   │Redirector TCB (Used by LANMAN)         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBProc_ID          │+10c  │2     │W   │process ID for file sharing checks      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBUser_ID          │+10e  │2     │W   │user ID for file sharing checks         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBfSharing         │+110  │1     │B   │non-zero ==> no redirection             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSrvAttrib        │+111  │1     │B   │see SetAttrib/file.asm                  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBJfnFlag          │+112  │1     │B   │JFN flag bits for current fil handle    │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBAllowed          │+113  │1     │B   │Allowed I 24 answers (see allowed_)     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBOpCookie         │+114  │4     │D   │server's per file cookie                │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBOpFlags          │+118  │2     │W   │whether server wants oplock, etc.       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBCurBuf           │+11a  │4     │D   │currently assigned buffer               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBThishVPB         │+11e  │2     │W   │handle of current VPB                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBNextAdd          │+120  │2     │W   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBBytSecPos        │+122  │2     │W   │position of first byte within sector    │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBClusNum          │+124  │2     │W   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBLastPos          │+126  │2     │W   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBBytCnt1          │+128  │2     │W   │Number of bytes in 1st sector           │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBBytCnt2          │+12a  │2     │W   │# of bytes in last sector               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSecCnt           │+12c  │2     │W   │number of whole sectors                 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSecClusPos       │+12e  │1     │B   │posit of first sector within cluster    │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBNoSetDir         │+12f  │1     │B   │If TRUE, do not set directory           │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBJoins            │+130  │1     │B   │number of joins                         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBPad              │+131  │1     │B   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBDevFCB           │+132  │1     │B   │Uses Name1, Name2, combined             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_direntry        │+133  │20    │S   │Directory entry                         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│dir_name            │+133  │b     │B   │File name                               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│dir_attr            │+13e  │1     │B   │Attribute bits                          │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│dir_pad             │+13f  │8     │B   │reserved                                │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│dir_EAhandle        │+147  │2     │W   │First cluster of extended attribute     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│dir_time            │+149  │2     │W   │Time of last write                      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│dir_date            │+14b  │2     │W   │Date of last write                      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│dir_firstfile       │+14d  │2     │W   │First allocation unit of file           │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│dir_size_l          │+14f  │2     │W   │Low 16 bits of file size                │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│dir_size_h          │+151  │2     │W   │High 16 bits of file size               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBName1            │+153  │c     │B   │File name buffer *REDIR*                │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBName2            │+15f  │d     │B   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBDESTSTART        │+16c  │2     │W   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBDirPad           │+16e  │5     │B   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBBufHE            │+173  │1     │B   │How to handle a HardError               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBactBufHE         │+174  │1     │B   │action response from user on HardErr    │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBfIOLock          │+175  │1     │B   │NZ if TCBLockHndl is valid              │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBLockHndl         │+176  │C     │S   │Lock handle of user mem                 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBThisCDS          │+182  │4     │D   │Address of current CDS                  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBThisFSC          │+186  │4     │D   │address of current FSC                  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTmpCDS          │+18a  │4     │D   │Address of dummycds                     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpOpenBuf         │+18e  │2     │W   │Address of current OpenBuf              │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpSearchBuf       │+190  │2     │W   │Address of SearchBuf                    │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBFailErr          │+192  │2     │W   │NZ if user did FAIL on I 24             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBShareRetriesLeft │+194  │2     │W   │number of share/lock viol retries       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBRetryCount       │+196  │2     │W   │num of share/lock retries to do         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBRetryLoop        │+198  │2     │W   │num of share/lock retry delay loops     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_pSrchBuf        │+19a  │2     │W   │internal search buffer                  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_pOpenBuf        │+19c  │2     │W   │Pointer to a scratch buffer on stack    │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBAttrib           │+19e  │2     │W   │storage for file attributes *REDIR*     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBExtFCB           │+1a0  │1     │B   │Extended FCB                            │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBPad2             │+1a1  │1     │B   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBWFP_Start        │+1a2  │2     │W   │TASKAREA offset for working string      │
│                    │      │      │    │*REDIR*                                 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBRen_WFP          │+1a4  │2     │W   │WFB pointer for rename destination      │
│                    │      │      │    │*REDIR*                                 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBWFP_Path_End     │+1a6  │2     │W   │End of Path component of string         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBCurr_Dir_End     │+1a8  │2     │W   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBDTAddr           │+1aa  │4     │D   │User's I/O transfer address *REDIR*     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBVolID            │+1ae  │1     │B   │!0 if vol ID found in dir search        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSpaceFlag        │+1af  │1     │B   │Embedded spaces allowed in FCB          │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBCreating         │+1b0  │1     │B   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBDelAll           │+1b1  │1     │B   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBFoundDel         │+1b2  │1     │B   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBFound_dev        │+1b3  │1     │B   │true => search found a device 3.10      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBfSplice          │+1b4  │1     │B   │true => do a splice in transpath 3.10   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBClusFac          │+1b5  │1     │B   │sectors/cluster used in dir search      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBcMeta            │+1b6  │1     │B   │components found 3.10                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBPathNameType     │+1b7  │1     │B   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBDevPt            │+1b8  │4     │D   │Address of device found by DevName      │
│                    │      │      │    │*REDIR*                                 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBDirSec           │+1bc  │4     │D   │Variables used in directory searching   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBDirStart         │+1c0  │2     │W   │Variables used in directory searching   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBNxtClusNum       │+1c2  │2     │W   │Variables used in directory searching   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBEntFree          │+1c4  │2     │W   │Variables used in directory searching   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBEntLast          │+1c6  │2     │W   │Variables used in directory searching   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBLastEnt          │+1c8  │2     │W   │Variables used in directory searching   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSattrib          │+1ca  │2     │W   │Storage for search attrs *REDIR* 3.10   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_SemInfo         │+1cc  │4     │D   │16bit addr of the ramsem blocked upon   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_SemDebugAddr    │+1d0  │4     │D   │debugger display address for ksems      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_NPX_Buffer      │+1d4  │4     │D   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBWaitNext     │+1d8  │4     │D   │Next waiting TCB                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBWaitList     │+1dc  │4     │D   │Threads waiting for me to die           │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBQState           │+1e0  │1     │B   │Scheduler queue location (actual)       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBState            │+1e1  │1     │B   │Current scheduler state (desired)       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBWakeFlags        │+1e2  │1     │B   │TKSleep/TKWakeup Flags                  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBcWindowBoost     │+1e3  │1     │B   │Window Boost count                      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBPriClass         │+1e4  │1     │B   │Priority Class (user)                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBPriLevel         │+1e5  │1     │B   │Priority Level (user)                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBPriClassMod      │+1e6  │1     │B   │Priority Class modifier bits            │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSchFlags         │+1e7  │1     │B   │Misc. Scheduler flags                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBPriority         │+1e8  │2     │W   │Calculated Priority                     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBPriorityMin      │+1ea  │2     │W   │Minimum Scheduling priority             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBcBoostLock       │+1ec  │4     │D   │Kernel Boost Lock nesting count.        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBPriNextQ     │+1f0  │4     │D   │Next priority queue in chain            │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBPriPrevQ     │+1f4  │4     │D   │Previous priority queue in chain        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBPriHigher    │+1f8  │4     │D   │Higher priority thread                  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBPriLower     │+1fc  │4     │D   │Lower priority thread                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBPriNext      │+200  │4     │D   │Next same-priority thread               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBPriPrev      │+204  │4     │D   │Prev same-priority thread               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBWakeup       │+208  │4     │D   │TKQueryWakeup TCB list                  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSleepID          │+20c  │4     │D   │Sleep ID this TCB is sleeping on        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBtoe              │+210  │14    │S   │Timeout/Starvation Timeout element      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBCheckedSig       │+224  │1     │B   │Used by the loader                      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBfSwapping        │+225  │1     │B   │status of swapping                      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBVolIONest        │+226  │1     │B   │nesting level of FSH_DoVolIO            │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBReqPktFlg        │+227  │1     │B   │Flag to indicate if request pkt in use  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBReqPkt           │+228  │4     │D   │I/O request packet for thread           │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSysTime          │+22c  │4     │D   │time spent in system code               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBUserTime         │+230  │4     │D   │time spent in user code                 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_pPVDBThd        │+234  │4     │D   │Ptr to Perfview Data Block for this     │
│                    │      │      │    │thread (pvdb_thd_s).                    │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_flDbg           │+238  │4     │D   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBCpl2_ESP         │+23c  │4     │D   │Saved TSS CPL2 stack pointer.           │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBCpl2_SS          │+240  │2     │W   │Saved TSS CPL2 stack segment.           │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBNewFlags         │+242  │1     │B   │Value copied from ptda_NewFiles         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBEntryActions     │+243  │1     │B   │Kernel entry force flags                │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSig_pend         │+244  │2     │W   │bit vector of pending signals           │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSig_holding      │+246  │2     │W   │bit vector of postponed signals         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSig_cur          │+248  │2     │W   │bit vec of signals being processed      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBXcptRepRec       │+24a  │4     │D   │report record of active exception       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSig_termtid      │+24e  │2     │W   │tid of terminator -75797                │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSecbits          │+250  │1     │B   │Security bits 54735                     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBspbytes          │+251  │1     │B   │To keep size 4*N 54735                  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_ulSRIndex       │+252  │4     │D   │Last semaphore cleared in MUX 72485     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBMiscFlags        │+256  │1     │B   │Used for hard error processing          │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBModeFlags        │+257  │2     │W   │Mode flags for OPEN - for WhatVolume    │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSpareFlags       │+259  │1     │B   │Spare flags                             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBLibiFlags        │+25a  │1     │B   │84537                                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBFiller           │+25b  │1     │B   │To keep size 4*N                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_ProcNameBuf     │+25c  │4     │D   │Pointer to procedure name               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_ObjNameBuf      │+260  │4     │D   │Pointer to object name buffer           │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_TmpNameBuf      │+264  │4     │D   │aka TCB_TgtModNameBuf                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_SrcModNameBuf   │+268  │4     │D   │Used by loader                          │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_FaultBuf        │+26c  │4     │D   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_ObjNameBufL     │+270  │2     │W   │Length of object name buffer            │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_TmpNameBufL     │+272  │2     │W   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_SrcModNameBufL  │+274  │2     │W   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_FaultBufL       │+276  │2     │W   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSecchild         │+278  │4     │D   │Child Security data 54735               │
└────────────────────┴──────┴──────┴────┴────────────────────────────────────────┘

TCBForcedActions flag definitions:

┌─────────────┬──────────┬────────────────────────────────────────┐
│Name         │Bit Mask  │Description                             │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_BUF    │0x00000001│Buffer must be released                 │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_EXIT   │0x00000002│Call TKExit (old FF_DES)                │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_CRITSEC│0x00000004│Enter Per-task critical section         │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_ICE    │0x00000008│Freeze thread                           │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_NPX    │0x00000010│NPX Error                               │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_TIB    │0x00000020│Update the TIB                          │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_TRC    │0x00000040│Enter Debug                             │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_SIG    │0x00000080│Signal pending                          │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_CTXH   │0x00000100│Pending local context hooks             │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_STIH   │0x00000200│Execute STI hooks                       │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_VDMBP  │0x00000400│Execute VDM BP hooks                    │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_RTRY   │0x00000800│Retry V86 system call                   │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_PIB    │0x00001000│Update the PIB                          │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_SCH    │0x00002000│Do Scheuler Processing                  │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_TFBIT  │0x00004000│Validate user eflags TF bit             │
├─────────────┼──────────┼────────────────────────────────────────┤
│TK_FF_TIBPRI │0x00008000│Update only the priority fields in TIB  │
│             │          │59463                                   │
└─────────────┴──────────┴────────────────────────────────────────┘

TCBEntryActions flag definitions:

┌───────────┬────────┬───────────────────────┐
│Name       │Bit Mask│Description            │
├───────────┼────────┼───────────────────────┤
│TK_EF_PFCLI│1       │Page fault inside CLI  │
├───────────┼────────┼───────────────────────┤
│TK_EF_TRC  │2       │DosDebug action pending│
└───────────┴────────┴───────────────────────┘

TCBWakeFlags flag definitions:

┌───────────────────┬────────┬────────────────────────────┐
│Name               │Bit Mask│Description                 │
├───────────────────┼────────┼────────────────────────────┤
│TK_WF_INTERRUPTED  │0x01    │Sleep was interrupted       │
├───────────────────┼────────┼────────────────────────────┤
│TK_WF_TIMEEXP      │0x02    │Timeout expired             │
├───────────────────┼────────┼────────────────────────────┤
│TK_WF_INTPENDING   │0x04    │Interrupt pending           │
├───────────────────┼────────┼────────────────────────────┤
│TK_WF_SINGLEWAKEUP │0x08    │Thread wants single wakeup  │
├───────────────────┼────────┼────────────────────────────┤
│TK_WF_INTERRUPTIBLE│0x10    │Thread blocked interruptibly│
├───────────────────┼────────┼────────────────────────────┤
│TK_WF_TIMEOUT      │0x20    │Thread blocked with timeout │
├───────────────────┼────────┼────────────────────────────┤
│TK_WF_SLEEPING     │0x40    │In TKSleep()                │
└───────────────────┴────────┴────────────────────────────┘

TCBState and TCBQState definitions:

┌────────────────┬────────┬─────────────────────────────────┐
│Name            │Value   │Description                      │
├────────────────┼────────┼─────────────────────────────────┤
│STATE_VOID      │0       │Uninitialized                    │
├────────────────┼────────┼─────────────────────────────────┤
│STATE_READY     │1       │Ready to run                     │
├────────────────┼────────┼─────────────────────────────────┤
│STATE_BLOCKED   │2       │Blocked on an ID                 │
├────────────────┼────────┼─────────────────────────────────┤
│STATE_SUSPENDED │3       │Suspended (DosSuspendThread)     │
├────────────────┼────────┼─────────────────────────────────┤
│STATE_CRITSEC   │4       │Blocked by another CritSec thread│
├────────────────┼────────┼─────────────────────────────────┤
│STATE_RUNNING   │5       │Thread currently running         │
├────────────────┼────────┼─────────────────────────────────┤
│STATE_READYBOOST│6       │Ready, but apply an IO boost     │
├────────────────┼────────┼─────────────────────────────────┤
│STATE_TSD       │7       │Thread waiting for TSD           │
├────────────────┼────────┼─────────────────────────────────┤
│STATE_DELAYED   │8       │Delayed TKWakeup (Almost Ready)  │
├────────────────┼────────┼─────────────────────────────────┤
│STATE_FROZEN    │9       │Frozen Thread (FF_ICE)           │
├────────────────┼────────┼─────────────────────────────────┤
│STATE_GETSTACK  │10      │Incomming TSD                    │
├────────────────┼────────┼─────────────────────────────────┤
│STATE_BADSTACK  │11      │TSD failed to swap in            │
└────────────────┴────────┴─────────────────────────────────┘

TCBPriClassMod definitions:

┌──────────────────────┬────────┬─────────────────────────────┐
│Name                  │Value   │Description                  │
├──────────────────────┼────────┼─────────────────────────────┤
│CLASSMOD_KEYBOARD     │0x04    │Keyboard boost               │
├──────────────────────┼────────┼─────────────────────────────┤
│CLASSMOD_STARVED      │0x08    │Starvation boost             │
├──────────────────────┼────────┼─────────────────────────────┤
│CLASSMOD_DEVICE       │0x10    │Device I/O Done Boost        │
├──────────────────────┼────────┼─────────────────────────────┤
│CLASSMOD_FOREGROUND   │0x20    │Foreground boost             │
├──────────────────────┼────────┼─────────────────────────────┤
│CLASSMOD_WINDOW       │0x40    │Window Boost                 │
├──────────────────────┼────────┼─────────────────────────────┤
│CLASSMOD_VDM_INTERRUPT│0x80    │VDM simulated interrupt boost│
└──────────────────────┴────────┴─────────────────────────────┘

TCBPriClass definitions:

┌───────────────────┬────────┬──────────────────────────┐
│Name               │Value   │Description               │
├───────────────────┼────────┼──────────────────────────┤
│CLASS_NOCHANGE     │0x00    │No priority class change  │
├───────────────────┼────────┼──────────────────────────┤
│CLASS_IDLE_TIME    │0x01    │Idle-Time class           │
├───────────────────┼────────┼──────────────────────────┤
│CLASS_REGULAR      │0x02    │Regular class             │
├───────────────────┼────────┼──────────────────────────┤
│CLASS_TIME_CRITICAL│0x03    │Time-Critical class       │
├───────────────────┼────────┼──────────────────────────┤
│CLASS_SERVER       │0x04    │Client-Server Server class│
└───────────────────┴────────┴──────────────────────────┘

TCBSchFlg flag definitions:

┌────────────────────┬────────┬─────────────────────────────────┐
│Name                │Bit Mask│Description                      │
├────────────────────┼────────┼─────────────────────────────────┤
│SCH_PROTECTED_PRI   │0x0001  │Only Intra-process SetPri allowed│
├────────────────────┼────────┼─────────────────────────────────┤
│SCH_WINDOWBOOST_LOCK│0x0002  │Lock out windoboost changes      │
├────────────────────┼────────┼─────────────────────────────────┤
│SCH_MINSLICE        │0x0004  │Use minimum timeslice            │
├────────────────────┼────────┼─────────────────────────────────┤
│SCH_PAGE_FAULT      │0x0008  │Dynamic timeslicing ###          │
├────────────────────┼────────┼─────────────────────────────────┤
│SCH_PAGE_FAULT_BIT  │0x03    │Dynamic timeslicing P728371      │
└────────────────────┴────────┴─────────────────────────────────┘

TCBfSwapping flag definitions:

┌───────────────┬────────┬───────────────────────────┐
│Name           │Bit Mask│Description                │
├───────────────┼────────┼───────────────────────────┤
│SM_TCB_SWAPPING│0x01    │swap i/o underway          │
├───────────────┼────────┼───────────────────────────┤
│SM_TCB_RESIZING│0x02    │data structures are growing│
└───────────────┴────────┴───────────────────────────┘

TCBMiscFlags flag definitions:

┌──────────────┬────────┬────────────────────────────────────────┐
│Name          │Bit Mask│Description                             │
├──────────────┼────────┼────────────────────────────────────────┤
│TMF_CMapFailed│(0x01)  │Set if alloc/realloc failed on a cluster│
│              │        │map (mft_selCMap).                      │
├──────────────┼────────┼────────────────────────────────────────┤
│TMF_IGNORE_HE │(0x02)  │If set, ignore (auto fail) hard error   │
├──────────────┼────────┼────────────────────────────────────────┤
│TMF_MULT_XCPT │(0x04)  │Set if multiple ring 0 exceptions       │
├──────────────┼────────┼────────────────────────────────────────┤
│TMF_NoFwd     │(0x08)  │Set if inhibiting forwarders            │
├──────────────┼────────┼────────────────────────────────────────┤
│TMF_EXIT_TERM │(0x10)  │TK_FF_EXIT means TKTermThread           │
├──────────────┼────────┼────────────────────────────────────────┤
│TMF_NO_EXCEPT │(0x20)  │Indicates TIB exception field invalid   │
├──────────────┼────────┼────────────────────────────────────────┤
│TMF_XCPT_HE   │(0x40)  │Indicates an exception harderr is       │
│              │        │pending                                 │
└──────────────┴────────┴────────────────────────────────────────┘

TCBMSpareFlags flag definitions:

┌───────────────────┬────────┬───────────────────┐
│Name               │Bit Mask│Description        │
├───────────────────┼────────┼───────────────────┤
│SPFLAGS_FGND_DISKIO│0x0080  │Foreground Disk I/O│
└───────────────────┴────────┴───────────────────┘

TCBReqPktFlg flag definitions:

┌───────────────┬────────┬───────────┐
│Name           │Bit Mask│Description│
├───────────────┼────────┼───────────┤
│TK_RP_ALLOCATED│0x01    │           │
├───────────────┼────────┼───────────┤
│TK_RP_INUSE    │0x02    │           │
└───────────────┴────────┴───────────┘


[Back: Exception Handler Stack Frames]
[Next: Thread Control Block for OS/2 Warp V3.0]