Per-Task Data Area for OS/2 Warp V4.0 RETAIL kernel
┌────────────────────┬──────┬──────┬────┬────────────────────────────────────────┐
│Field Name │Offset│Length│Type│Description │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│pPTDAParent │+0 │4 │D │Parent PTDA │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│pPTDASelf │+4 │4 │D │This PTDA │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│pPTDAFirstChild │+8 │4 │D │Head of child chain PTDA │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│pPTDAExecChild │+c │4 │D │New Child PTDA (Child being exec'ed) │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│pPTDANextSibling │+10 │4 │D │Next sibling's PTDA │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│pPTDAPrevSibling │+14 │4 │D │Previous sibling's PTDA │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pszproc │+18 │4 │D │Pointer to the EXE file this process is │
│ │ │ │ │executing. Used by PerfView │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pTCBHole │+1c │4 │D │some TCB before first Tid 'hole' │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pTCBHead │+20 │4 │D │Head of list of active TCBs owned by │
│ │ │ │ │this process │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_cTCB │+24 │2 │W │Number of TCBs in use │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ctib │+26 │2 │W │Count of TIBs allocated │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_avatib │+28 │10 │D │Pointers to TIB arrays │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pdcb │+38 │4 │D │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_flDbg │+3c │4 │D │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ah │+40 │40 │S │Private arena header │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pgdata │+80 │26 │S │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_environ │+a6 │2 │W │handle to process's envt seg │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pBeginLIBPATH │+a8 │4 │D │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pEndLIBPATH │+ac │4 │D │D75220- support dynamic libpath │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pgpc │+b0 │240 │S │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pPVDBPrc │+2f0 │4 │D │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pSGSList │+2f4 │4 │D │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pexllist │+2f8 │4 │D │Flat pointer to exit list data │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_cdllterm │+2fc │4 │D │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│CDS_Handle │+300 │34 │W │array of current directory handles │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│OEMPtr │+334 │2 │W │Offset to OEM-Added fields │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│VerFlg │+336 │1 │B │Initialize with verify off │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│LCurDrv │+337 │1 │B │Logical current drive - Default A: │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│PCurDrv │+338 │1 │B │physical drive after assign mapping │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│LIS_Fgnd │+339 │1 │B │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│FgndOnly │+33a │1 │B │foreground only flag │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pad1 │+33b │1 │B │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pTCBCritSec │+33c │4 │D │TCB that did enter CritSec │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pTCBPriQCritSec│+340 │4 │D │TCBs awaiting CritSec wakeup │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_cCritSec │+344 │2 │W │Critical Section Count │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│CurrentPDB │+346 │2 │W │Currently active PDB (V86 segment) │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│seltss │+348 │2 │W │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ProcFlag │+34a │2 │W │if == 1 then this is a special process │
│ │ │ │ │(swapper or screen switch); NO removable│
│ │ │ │ │media buffer will be allocated to this │
│ │ │ │ │process. │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ForcedActions │+34c │4 │D │pending action bits │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ulExitCode │+350 │4 │D │Exit code of last task │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ulExitType │+354 │4 │D │Type of exit │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ulExitTID │+358 │4 │D │Exit Thread ID (32-bit exceptions) │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ThisCDS │+35c │4 │D │Address of current CDS *REDIR* 3.10 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pCDS │+360 │2 │W │SS relative pointer to a curdir struct │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│CDSsize │+362 │2 │W │Size of CDS pointed to by ThisCDS ONLY │
│ │ │ │ │used for CDS entries in RMP seg │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Sattrib │+364 │2 │W │Storage for search attrs *REDIR* 3.10 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│sPCB │+366 │2 │W │Selector of Profile Control Block │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pPCB │+368 │4 │D │Pointer to Profile Control Block │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│JFN_Max │+36c │2 │W │highest JFN used so far │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│NextSrchH │+36e │2 │W │Next value to use for search handle │
│ │ │ │ │First value used will be 2. │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│SrchRmp │+370 │4 │D │Handle & Selector for RMP segment we │
│ │ │ │ │keep search handles in. │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│FNotifyLocal_First │+374 │2 │W │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│FNotifyLocal_Count │+376 │2 │W │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Sig_ignf │+378 │2 │W │bit vector of ignored signals │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Sig_hndf │+37a │2 │W │bit vector of handled signals │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Sig_errf │+37c │2 │W │bit vector of error generating signals │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Sig_attempted │+37e │2 │W │bit vector of signals we've tried to │
│ │ │ │ │handle with 32-bit exceptions │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Sig_arg │+380 │10 │W │byte vector of signal arguments │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Sig_termtid │+390 │2 │W │'Terminator' TID for APTERM. │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│HoldSigCnt │+392 │2 │W │DOSHOLDSIGNAL counter │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│SigFocusCnt │+394 │2 │W │PUBLIB DOS32SETSIGNALEXCEPTIONFOCUS │
│ │ │ │ │count │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│JFN_Table │+396 │28 │W │default handle table │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│JFN_Flags │+3be │14 │B │default JFN flags table │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_rasflag │+3d2 │2 │W │RAS trace indicator │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│SysSemPTDATbl │+3d4 │100 │S │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│SavedHardErr │+4d4 │4 │D │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ptdasem │+4d8 │8 │S │PTDA semaphore that is, inter-thread │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_DLMsem │+4e0 │8 │S │b732954 Edd PTDA semaphore that is, │
│ │ │ │ │inter-thread │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_lidt │+4e8 │6 │W │current IDT limit/base │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Csid │+4ee │2 │W │Command Subtree ID │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Behav_bit │+4f0 │2 │W │program behavior bits │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│MSW │+4f2 │2 │W │CPU matching status word │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_rsrclist │+4f4 │4 │D │far pointer to local resource list │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pldrdldHead │+4f8 │4 │D │loader demand load data list │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│pPrSemTbl │+4fc │4 │D │(void * => PSEM) pointer to private │
│ │ │ │ │semaphore table │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ulPrTblSize │+500 │4 │D │size of pPrSemTbl in dwords │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ulPrTotUsed │+504 │4 │D │number of entries in pPrSemTbl │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ulPrNextFree │+508 │4 │D │next free slot in pPrSemTbl │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│hksPrTbl │+50c │4 │D │kernel semaphore handle for private │
│ │ │ │ │semaphore table │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│pShSemBmp │+510 │4 │D │pointer to private bitmap for the shared│
│ │ │ │ │semaphore table │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ulShBmpSize │+514 │4 │D │size of pShSemBmp in bits │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│hksShBmp │+518 │4 │D │kernel semaphore handle for private │
│ │ │ │ │semaphore table │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ulMtxOwned │+51c │4 │D │number of mutex owned by this process in│
│ │ │ │ │the two sem tables │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_TLMA │+520 │4 │D │in use flag and dword copy count │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_TLMABM │+524 │4 │B │thread local memory │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_TLMASizeMap │+528 │20 │B │thread local memory │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Cons_Loc │+548 │A │S │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│SysCallSfcn │+552 │1 │B │Value of AL on system entry │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│SysCall │+553 │1 │B │Last system call processed │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│KBD_Mode │+554 │1 │B │Keyboard input mode │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_NewFiles │+555 │1 │B │If bit one is set, process supports // │
│ │ │ │ │54400 new files (long names) │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│AutoFail │+556 │1 │B │Non-zero if I 24 FAILed magically │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│CP_Flgs │+557 │1 │B │Default is no codepage in system. │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Sig_vec │+558 │20 │D │signal handlers │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Exc_vec │+578 │1C │D │OSOLETE exception vectors │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_timerhead │+594 │4 │D │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_extsig │+598 │1 │B │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pad6 │+59b │3 │B │alignment │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│pPvwDataBlk │+59c │4 │D │Used by perfview │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_lanman_sec │+5a0 │4 │D │Used by LANMAN & HPFS for security. │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│SigFTerm │+5a4 │2 │W │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ppgdata │+5a6 │2 │W │offset ptda_pgdata │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_child │+5a8 │2 │W │New child PTDA handle (Child being │
│ │ │ │ │Exec'ed) │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_childalias │+5aa │2 │W │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_handle │+5ac │2 │W │handle to this segment │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_module │+5ae │2 │W │program module handle for process │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ldthandle │+5b0 │2 │W │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ldtpgmap │+5b2 │2 │W │Bitmap of valid LDT pages │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ldtaddr │+5b4 │4 │D │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│CP_CaseMapTbl │+5b8 │4 │D │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│codepage_tag │+5bc │2 │W │the current code page │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│JFN_Length │+5be │2 │W │Size of JFN table in bytes │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│JFN_pTable │+5c0 │4 │D │PM pointer to JFN table │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│JFN_Flg_Ptr │+5c4 │4 │D │pointer to JFN flags │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pad │+5c8 │1 │B │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ExtErr_Locus │+5c9 │1 │B │Extended Error Locus *REDIR* 3.10 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ExtErr │+5ca │2 │W │Extended Error code *REDIR* 3.10 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ExtErr_Action │+5cc │1 │B │Extended Error Action *REDIR* 3.10 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ExtErr_Class │+5cd │1 │B │Extended Error Class *REDIR* 3.10 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_infoseg │+5ce │24 │S │ │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_vme │+5f2 │1 │B │VME Flag │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pad3 │+5f3 │1 │B │alignment │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│CurrTCB │+5f4 │2 │W │pointer to current TCB │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│CurrTSD │+5f6 │2 │W │pointer to current TSD │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ThisPTDA │+5f8 │2 │W │Selector for this ptda │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_NPX_em_cs │+5fa │2 │W │b726833 NPX emulator CS b726833 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_NPX_em_eip │+5fc │4 │D │b726833 NPX emulator EIP b726833 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pad4 │+600 │2 │W │alignment b726833 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_signature │+602 │2 │B │must contain "TD" │
└────────────────────┴──────┴──────┴────┴────────────────────────────────────────┘
[Back: Per-Task Data Area for OS/2 Warp V4.0 ALLSTRICT kernel]
[Next: Per-Task Data Area for OS/2 Warp V3.0 ALLSTRICT kernel]