Format a task state segment.
Syntax:
────── DT ───────┬─────────┬────────────────────────────────── └─ addr ──┘
Parameters:
addr
Results & Notes:
The TSS is formatted as follows:
────────────────────────────────────────────────────────────────────────##dt 10:0 eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=00000000 edi=00000000 eip=00000000 esp=00000000 ebp=00000000 iopl=0 -- -- -- nv up di pl nz na po nc cs=0000 ss=0000 ds=0000 es=0000 fs=0000 gs=0000 cr3=001d1000 ss0=0030 esp0=000066fc ss1=0000 esp1=00000000 ss2=0866 esp2=00001000 ldtr=0028 link=0000 tflags=0000 i/o map=dfff ports trapped: 0-ffff ────────────────────────────────────────────────────────────────────────
Each of the fields displayed has the following meaning:
Note:
Some of the TSS fields are set at task creation and other when a task switch occurs.
eax=
Note: This provides the real address of the Page Directory Table, which never alters under OS/2.
Note: Ring 1 is not used under OS/2.
Note: It is permissible for the i/o map offset to point beyond the TSS segment. This signifies that no I/O permissions are granted and all ports will be trapped.
Notes:
For performance reasons hardware implemented task switching is used only in a limited way in OS/2. TSSs defined by OS/2 include:
Protect mode code (TSS selector 10)
Virtual DOS Machines
Non Maskable Interrupt handling (trap 2, TSS selector 1E38)
Double Fault handling (trap 8, TSS selector 88)
All protect-mode processes run under a common top-level task using selector 10 as the TSS selector.
The seltss (PTDA +0x2f0) field of the PTDA records the top-level task's TSS selector used by a given process, thus may be used to find the TSS selector for Virtual DOS Machines.
Refer to Intel Pentium User's Guide and Intel x86 Programmer's Reference for more information on the Task State Segment and Hardware architected multi-tasking.