get_segment_selector(9)
π get_segment_selector(9) π
okay so this is from the Kernel API Manual, bestie, and itβs giving βwe need a segment selectorβ energy β¨
πΈ NAME πΈ
get_segment_selectorβ obtain segment selector π
β¨ SYNOPSIS β¨
short get_segment_selector (struct pt_regs *regs , int seg_reg_idx );
π ARGUMENTS π
regsβ register values as seen when entering kernel mode π«Άseg_reg_idxβ segment register index to use π
π DESCRIPTION π
okay so the whole point is to obtain the segment selector from any of the CS, SS, DS, ES, FS, GS segment registers. literally any of those six, sheβs got you π
In CONFIG_X86_32, the segment is obtained from either pt_regs or kernel_vm86_regs as applicable. In CONFIG_X86_64, CS and SS are obtained from pt_regs. DS, ES, FS and GS are obtained by reading the actual CPU registers. This is done only for completeness, because in CONFIG_X86_64 segment registers are ignored π
what you get back:
- the value of the segment selector, including
nullwhen running in long mode π -EINVALon error π
π¦ SEE ALSO π¦
these all live in the kernel file ./arch/x86/lib/insn-eval.c β go be nosy, bestie π
is_string_insn(9)insn_has_rep_prefix(9)get_seg_reg_override_idx(9)check_seg_overrides(9)resolve_default_seg(9)resolve_seg_reg(9)get_reg_offset_16(9)get_desc(9)insn_get_seg_base(9)get_seg_limit(9)insn_get_code_seg_params(9)insn_get_modrm_rm_off(9)insn_get_modrm_reg_off(9)insn_get_modrm_reg_ptr(9)get_seg_base_limit(9)get_eff_addr_reg(9)get_eff_addr_modrm(9)get_eff_addr_modrm_16(9)get_eff_addr_sib(9)get_addr_ref_16(9)get_addr_ref_32(9)get_addr_ref_64(9)insn_get_addr_ref(9)insn_fetch_from_user(9)insn_fetch_from_user_inatomic(9)insn_decode_from_regs(9)insn_decode_mmio(9)
later bestie π β source/version says ./arch/x86/lib, date says October 2026, and this whole page is get_segment_selector(9) π¦β¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms