desc_defs.h

来自「linux 内核源代码」· C头文件 代码 · 共 70 行

H
70
字号
/* Written 2000 by Andi Kleen */#ifndef __ARCH_DESC_DEFS_H#define __ARCH_DESC_DEFS_H/* * Segment descriptor structure definitions, usable from both x86_64 and i386 * archs. */#ifndef __ASSEMBLY__#include <linux/types.h>// 8 byte segment descriptorstruct desc_struct {	u16 limit0;	u16 base0;	unsigned base1 : 8, type : 4, s : 1, dpl : 2, p : 1;	unsigned limit : 4, avl : 1, l : 1, d : 1, g : 1, base2 : 8;} __attribute__((packed));struct n_desc_struct {	unsigned int a,b;};enum {	GATE_INTERRUPT = 0xE,	GATE_TRAP = 0xF,	GATE_CALL = 0xC,};// 16byte gatestruct gate_struct {	u16 offset_low;	u16 segment;	unsigned ist : 3, zero0 : 5, type : 5, dpl : 2, p : 1;	u16 offset_middle;	u32 offset_high;	u32 zero1;} __attribute__((packed));#define PTR_LOW(x) ((unsigned long)(x) & 0xFFFF)#define PTR_MIDDLE(x) (((unsigned long)(x) >> 16) & 0xFFFF)#define PTR_HIGH(x) ((unsigned long)(x) >> 32)enum {	DESC_TSS = 0x9,	DESC_LDT = 0x2,};// LDT or TSS descriptor in the GDT. 16 bytes.struct ldttss_desc {	u16 limit0;	u16 base0;	unsigned base1 : 8, type : 5, dpl : 2, p : 1;	unsigned limit1 : 4, zero0 : 3, g : 1, base2 : 8;	u32 base3;	u32 zero1;} __attribute__((packed));struct desc_ptr {	unsigned short size;	unsigned long address;} __attribute__((packed)) ;#endif /* !__ASSEMBLY__ */#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?