Thread Control Block for OS/2 Warp V3.0

┌──────────────────┬──────┬──────┬────┬────────────────────────────────────────┐
│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      │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBTLMA           │+74   │80    │D   │Thread local memory area                │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBDMAAdd         │+f4   │4     │D   │User's I/O transfer address             │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSecPos         │+f8   │4     │D   │Position of first sector accessed within│
│                  │      │      │    │file                                    │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBThisSFT        │+fc   │4     │D   │pointer to SFT we're working with       │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBValSec         │+100  │4     │D   │Number of valid (previously written)    │
│                  │      │      │    │sectors                                 │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpRTCB          │+104  │4     │D   │Redirector TCB (Used by LANMAN)         │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBProc_ID        │+108  │2     │W   │process ID for file sharing checks      │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBUser_ID        │+10a  │2     │W   │user ID for file sharing checks         │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBfSharing       │+10c  │1     │B   │non-zero ==> no redirection             │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSrvAttrib      │+10d  │1     │B   │see SetAttrib/file.asm                  │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBJfnFlag        │+10e  │1     │B   │JFN flag bits for current fil handle    │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBAllowed        │+10f  │1     │B   │Allowed I 24 answers (see allowed_)     │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBOpCookie       │+110  │4     │D   │server's per file cookie                │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBOpFlags        │+114  │2     │W   │whether server wants oplock, etc.       │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBCurBuf         │+116  │4     │D   │currently assigned buffer               │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBThishVPB       │+11a  │2     │W   │handle of current VPB                   │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBNextAdd        │+11c  │2     │W   │                                        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBBytSecPos      │+11e  │2     │W   │position of first byte within sector    │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBClusNum        │+120  │2     │W   │                                        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBLastPos        │+122  │2     │W   │                                        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBBytCnt1        │+124  │2     │W   │Number of bytes in 1st sector           │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBBytCnt2        │+126  │2     │W   │# of bytes in last sector               │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSecCnt         │+128  │2     │W   │number of whole sectors                 │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSecClusPos     │+12a  │1     │B   │posit of first sector within cluster    │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBBufHE          │+12b  │1     │B   │How to handle a HardError               │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBactBufHE       │+12c  │1     │B   │action response from user on HardErr    │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBfIOLock        │+12d  │1     │B   │NZ if TCBLockHndl is valid              │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBLockHndl       │+12e  │C     │S   │Lock handle of user mem                 │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBThisCDS        │+13a  │4     │D   │Address of current CDS                  │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBThisFSC        │+13e  │4     │D   │address of current FSC                  │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTmpCDS        │+142  │4     │D   │Address of dummycds                     │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpOpenBuf       │+146  │2     │W   │Address of current OpenBuf              │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpSearchBuf     │+148  │2     │W   │Address of SearchBuf                    │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBFailErr        │+14a  │2     │W   │NZ if user did FAIL on I 24             │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_SemInfo       │+14c  │4     │D   │16bit addr of the ramsem blocked upon   │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_SemDebugAddr  │+150  │4     │D   │debugger display address for ksems      │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_NPX_Buffer    │+154  │4     │D   │                                        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBWaitNext   │+158  │4     │D   │Next waiting TCB                        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBWaitList   │+15c  │4     │D   │Threads waiting for me to die           │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBQState         │+160  │1     │B   │Scheduler queue location (actual)       │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBState          │+161  │1     │B   │Current scheduler state (desired)       │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBWakeFlags      │+162  │1     │B   │TKSleep/TKWakeup Flags                  │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBcWindowBoost   │+163  │1     │B   │Window Boost count                      │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBPriClass       │+164  │1     │B   │Priority Class (user)                   │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBPriLevel       │+165  │1     │B   │Priority Level (user)                   │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBPriClassMod    │+166  │1     │B   │Priority Class modifier bits            │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSchFlags       │+167  │1     │B   │Misc. Scheduler flags                   │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBPriority       │+168  │2     │W   │Calculated Priority                     │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBPriorityMin    │+16a  │2     │W   │Minimum Scheduling priority             │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBcBoostLock     │+16c  │4     │D   │Kernel Boost Lock nesting count.        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBPriNextQ   │+170  │4     │D   │Next priority queue in chain            │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBPriPrevQ   │+174  │4     │D   │Previous priority queue in chain        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBPriHigher  │+178  │4     │D   │Higher priority thread                  │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBPriLower   │+17c  │4     │D   │Lower priority thread                   │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBPriNext    │+180  │4     │D   │Next same-priority thread               │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBPriPrev    │+184  │4     │D   │Prev same-priority thread               │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBpTCBWakeup     │+188  │4     │D   │TKQueryWakeup TCB list                  │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSleepID        │+18c  │4     │D   │Sleep ID this TCB is sleeping on        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBtoe            │+190  │10    │S   │Timeout/Starvation Timeout element      │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBCheckedSig     │+1a0  │1     │B   │Used by the loader                      │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBfSwapping      │+1a1  │1     │B   │status of swapping                      │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBVolIONest      │+1a2  │1     │B   │nesting level of FSH_DoVolIO            │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBReqPktFlg      │+1a3  │1     │B   │Flag to indicate if request pkt in use  │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBReqPkt         │+1a4  │4     │D   │I/O request packet for thread           │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSysTime        │+1a8  │4     │D   │time spent in system code               │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBUserTime       │+1ac  │4     │D   │time spent in user code                 │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_pPVDBThd      │+1b0  │4     │D   │Ptr to Perfview Data Block for this     │
│                  │      │      │    │thread (pvdb_thd_s).                    │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_flDbg         │+1b4  │4     │D   │                                        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBCpl2_ESP       │+1b8  │4     │D   │Saved TSS CPL2 stack pointer.           │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBCpl2_SS        │+1bc  │2     │W   │Saved TSS CPL2 stack segment.           │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBNewFlags       │+1be  │1     │B   │Value copied from ptda_NewFiles         │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBEntryActions   │+1bf  │1     │B   │Kernel entry force flags                │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSig_pend       │+1c0  │2     │W   │bit vector of pending signals           │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSig_holding    │+1c2  │2     │W   │bit vector of postponed signals         │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSig_cur        │+1c4  │2     │W   │bit vec of signals being processed      │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBXcptRepRec     │+1c6  │4     │D   │report record of active exception       │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSig_termtid    │+1ca  │2     │W   │tid of terminator -75797                │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSecbits        │+1cc  │1     │B   │Security bits 54735                     │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBspbytes        │+1cd  │1     │B   │To keep size 4*N 54735                  │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_ulSRIndex     │+1ce  │4     │D   │Last semaphore cleared in MUX 72485     │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBMiscFlags      │+1d2  │1     │B   │Used for hard error processing          │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBModeFlags      │+1d3  │2     │W   │Mode flags for OPEN - for WhatVolume    │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSpareFlags     │+1d5  │1     │B   │Spare flags                             │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBLibiFlags      │+1d6  │1     │B   │84537                                   │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBFiller         │+1d7  │1     │B   │To keep size 4*N                        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_ProcNameBuf   │+1d8  │4     │D   │Pointer to procedure name               │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_ObjNameBuf    │+1dc  │4     │D   │Pointer to object name buffer           │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_TmpNameBuf    │+1e0  │4     │D   │aka TCB_TgtModNameBuf                   │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_SrcModNameBuf │+1e4  │4     │D   │Used by loader                          │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_FaultBuf      │+1e8  │4     │D   │                                        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_ObjNameBufL   │+1ec  │2     │W   │Length of object name buffer            │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_TmpNameBufL   │+1ee  │2     │W   │                                        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_SrcModNameBufL│+1f0  │2     │W   │                                        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCB_FaultBufL     │+1f2  │2     │W   │                                        │
├──────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TCBSecchild       │+1f4  │4     │D   │Child Security data 54735               │
└──────────────────┴──────┴──────┴────┴────────────────────────────────────────┘


[Back: Thread Control Block OS/2 Warp V4.0]
[Next: Thread Control Block for OS/2 Warp V3.0 with Fix-Pack]