Pointers
┌────────────┬──────┬──────┬────┬───────────────────────────┐│Field Name │Offset│Length│Type│Description │ ├────────────┼──────┼──────┼────┼───────────────────────────┤ │ste_offset │+0 │2 │W │file offset to segment data│ ├────────────┼──────┼──────┼────┼───────────────────────────┤ │ste_size │+2 │2 │W │file data size │ ├────────────┼──────┼──────┼────┼───────────────────────────┤ │ste_flags │+4 │2 │W │type and attribute flags │ ├────────────┼──────┼──────┼────┼───────────────────────────┤ │ste_minsiz │+6 │2 │W │minimum allocation size │ ├────────────┼──────┼──────┼────┼───────────────────────────┤ │ste_seghdl │+8 │2 │W │segment handle │ ├────────────┼──────┼──────┼────┼───────────────────────────┤ │ste_selector│+a │2 │W │segment selector │ ├────────────┼──────┼──────┼────┼───────────────────────────┤ │ste_fixups │+c │4 │D │fixup record storage │ └────────────┴──────┴──────┴────┴───────────────────────────┘
ste_flags flag definitions:
┌─────────────┬────────┬────────────────────────────────────────┐ │Name │Bit Mask│Description │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_TYPE_MASK│0x0001 │segment type field │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_CODE │0x0000 │code segment type │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_DATA │0x0001 │data segment type │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_PACKED │0x0002 │segment is packed │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_SEMAPHORE│0x0004 │segment semaphore │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_ITERATED │0x0008 │segment data is iterated │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_WAITING │0x0010 │segment is waiting on semephore │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_SHARED │0x0020 │segment can be shared │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_PRELOAD │0x0040 │segment is preload │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_ERONLY │0x0080 │excute only if code segment read only if│ │ │ │data segment │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_RELOCINFO│0x0100 │set if segment has reloc records │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_CONFORM │0x0200 │segment is conforming │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_RING_2 │0x0800 │ring 2 selector │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_RING_3 │0x0C00 │ring 3 selector │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_HUGE │0x1000 │huge segment │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_PAGEABLE │0x2000 │just a page can be faulted in │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_PRESENT │0x2000 │packed segment already loaded │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_SELALLOC │0x4000 │used to indicate sel allocated │ ├─────────────┼────────┼────────────────────────────────────────┤ │STE_GDTSEG │0x8000 │used to indicate GTD sel alloc │ └─────────────┴────────┴────────────────────────────────────────┘