Thread Swappable Data for OS/2 V2.11 ALLSTRICT kernel
┌─────────────────┬──────┬──────┬────┬────────────────────────────────────────┐
│Field Name │Offset│Length│Type│Description │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDpad │+0 │1000 │B │Dummy page to catch faults │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDUserStack │+1000 │F98 │W │Thread's kernel stack │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDUserESP │+1f98 │4 │D │Saved user stack pointer │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDUserSS │+1f9c │2 │W │Saved user stack segment │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDUserSSPad │+1f9e │2 │W │Pad word pushed by gate │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDKernelESP │+1fa0 │4 │D │Saved kernel stack pointer. │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDpTCB │+1fa4 │4 │D │Link to TCB │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDpfnFault │+1fa8 │4 │D │ptr to local fault handler in effect │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDTrapNum │+1fac │4 │D │TrapNum from the last fault │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDerrcFault │+1fb0 │4 │D │error code from the last fault │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDpljmp │+1fb4 │4 │D │Buffer saved by TKCatchFault │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDselFault │+1fb8 │2 │W │faulting selector │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDCpl2_SSSize │+1fba │2 │W │Size of ring 2 stack - atleast thats │
│ │ │ │ │what the user beleives │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDdescLDT │+1fbc │8 │D │LDT table descriptor │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDdescKStackSS │+1fc4 │8 │D │SS descriptor │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDdescFPEM │+1fcc │8 │D │reserved descriptor slot │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDdescTIB │+1fd4 │8 │D │FS mapping to TIB │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDulExitCode │+1fdc │4 │D │Proposed Thread Exit code (for dbg) │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDerridFault │+1fe0 │4 │D │error id from page fault │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDPFErr │+1fe4 │4 │D │actual error from PGPagefault │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDlDbgRangeStart│+1fe8 │4 │D │ │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDlDbgRangeEnd │+1fec │4 │D │ │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDlDbgLastAddr │+1ff0 │4 │D │ │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDpPCB │+1ff4 │4 │D │Pointer to Profile Control Block │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDpDLLTerm │+1ff8 │4 │D │Pointer to data buffer │
├─────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
│TSDcObjSem │+1ffc │4 │D │Count of object semaphores held │
└─────────────────┴──────┴──────┴────┴────────────────────────────────────────┘
[Back: Thread Swappable Data for OS/2 Warp V3.0 RETAIL kernel]
[Next: Thread Swappable Data for OS/2 V2.11 RETAIL kernel]