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