For TCB formats for other versions of OS/2 see:
TCB for OS/2 Warp V3.0 with Fix pack 9
TCB for OS/2 Warp V3.0 with Fix pack 11 or later
Pointers
Multiple chain pointers between, TSD, TCB and PTDA.
CurrTCB points to the current TCB.
┌────────────────────┬──────┬──────┬────┬────────────────────────────────────────┐│Field Name │Offset│Length│Type│Description │ ├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤ │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 │ │ └───────────────┴────────┴───────────┘