Per-Task Data Area for OS/2 Warp V4.0 ALLSTRICT kernel

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

Pointers

Locations VM Owner

Format

┌────────────────────┬──────┬──────┬────┬────────────────────────────────────────┐│Field NameOffsetLengthTypeDescription                             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│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  │C     │S   │PTDA semaphore that is, inter-thread    │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_DLMsem         │+4e4  │C     │S   │b732954 Edd PTDA semaphore that is,     │
│                    │      │      │    │inter-thread                            │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_lidt           │+4f0  │6     │W   │current IDT limit/base                  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Csid                │+4f6  │2     │W   │Command Subtree ID                      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Behav_bit           │+4f8  │2     │W   │program behavior bits                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│MSW                 │+4fa  │2     │W   │CPU matching status word                │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_rsrclist       │+4fc  │4     │D   │far pointer to local resource list      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pldrdldHead    │+500  │4     │D   │loader demand load data list            │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│pPrSemTbl           │+504  │4     │D   │(void * => PSEM) pointer to private     │
│                    │      │      │    │semaphore table                         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ulPrTblSize         │+508  │4     │D   │size of pPrSemTbl in dwords             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ulPrTotUsed         │+50c  │4     │D   │number of entries in pPrSemTbl          │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ulPrNextFree        │+510  │4     │D   │next free slot in pPrSemTbl             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│hksPrTbl            │+514  │4     │D   │kernel semaphore handle for private     │
│                    │      │      │    │semaphore table                         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│pShSemBmp           │+518  │4     │D   │pointer to private bitmap for the shared│
│                    │      │      │    │semaphore table                         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ulShBmpSize         │+51c  │4     │D   │size of pShSemBmp in bits               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│hksShBmp            │+520  │4     │D   │kernel semaphore handle for private     │
│                    │      │      │    │semaphore table                         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ulMtxOwned          │+524  │4     │D   │number of mutex owned by this process in│
│                    │      │      │    │the two sem tables                      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_TLMA           │+528  │4     │D   │in use flag and dword copy count        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_TLMABM         │+52c  │4     │B   │thread local memory                     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_TLMASizeMap    │+530  │20    │B   │thread local memory                     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Cons_Loc            │+550  │A     │S   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│SysCallSfcn         │+55a  │1     │B   │Value of AL on system entry             │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│SysCall             │+55b  │1     │B   │Last system call processed              │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│KBD_Mode            │+55c  │1     │B   │Keyboard input mode                     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_NewFiles       │+55d  │1     │B   │If bit one is set, process supports //  │
│                    │      │      │    │54400 new files (long names)            │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│AutoFail            │+55e  │1     │B   │Non-zero if I 24 FAILed magically       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│CP_Flgs             │+55f  │1     │B   │Default is no codepage in system.       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Sig_vec             │+560  │20    │D   │signal handlers                         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│Exc_vec             │+580  │1C    │D   │OSOLETE exception vectors               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_timerhead      │+59c  │4     │D   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_extsig         │+5a0  │1     │B   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pad6           │+5a1  │3     │B   │alignment                               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│pPvwDataBlk         │+5a4  │4     │D   │Used by perfview                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_lanman_sec     │+5a8  │4     │D   │Used by LANMAN & HPFS for security.     │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│SigFTerm            │+5ac  │2     │W   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ppgdata        │+5ae  │2     │W   │offset ptda_pgdata                      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_child          │+5b0  │2     │W   │New child PTDA handle (Child being      │
│                    │      │      │    │Exec'ed)                                │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_childalias     │+5b2  │2     │W   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_handle         │+5b4  │2     │W   │handle to this segment                  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_module         │+5b6  │2     │W   │program module handle for process       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ldthandle      │+5b8  │2     │W   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ldtpgmap       │+5ba  │2     │W   │Bitmap of valid LDT pages               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_ldtaddr        │+5bc  │4     │D   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│CP_CaseMapTbl       │+5c0  │4     │D   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│codepage_tag        │+5c4  │2     │W   │the current code page                   │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│JFN_Length          │+5c6  │2     │W   │Size of JFN table in bytes              │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│JFN_pTable          │+5c8  │4     │D   │PM pointer to JFN table                 │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│JFN_Flg_Ptr         │+5cc  │4     │D   │pointer to JFN flags                    │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pad            │+5d0  │1     │B   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ExtErr_Locus        │+5d1  │1     │B   │Extended Error Locus *REDIR* 3.10       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ExtErr              │+5d2  │2     │W   │Extended Error code *REDIR* 3.10        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ExtErr_Action       │+5d4  │1     │B   │Extended Error Action *REDIR* 3.10      │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ExtErr_Class        │+5d5  │1     │B   │Extended Error Class *REDIR* 3.10       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_infoseg        │+5d6  │24    │S   │                                        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_vme            │+5fa  │1     │B   │VME Flag                                │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pad3           │+5fb  │1     │B   │alignment                               │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│CurrTCB             │+5fc  │2     │W   │pointer to current TCB                  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│CurrTSD             │+5fe  │2     │W   │pointer to current TSD                  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ThisPTDA            │+600  │2     │W   │Selector for this ptda                  │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_NPX_em_cs      │+602  │2     │W   │b726833 NPX emulator CS b726833         │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_NPX_em_eip     │+604  │4     │D   │b726833 NPX emulator EIP b726833        │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_pad4           │+608  │2     │W   │alignment b726833                       │
├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│ptda_signature      │+60a  │2     │B   │must contain "TD"                       │
└────────────────────┴──────┴──────┴────┴────────────────────────────────────────┘

ptda_ForcedActions 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                                   │
└─────────────┴──────────┴────────────────────────────────────────┘


[Back: Local Exception Handler Long-Jump Buffer]
[Next: Per-Task Data Area for OS/2 Warp V4.0 RETAIL kernel]