:
struct idt_bits {
u16 ist : 3,
zero : 5,
type : 5,
dpl...就是这个权限,实际中我们一般称为RPL;
我们后面会通过一个例子来讲一下CPL,RPL和DPL三者之间的关系。..., __KERNEL_CS)
/* System interrupt gate
系统中断门,DPL = 3
可以从用户态调用,比如系统调用
*/
#define SYSG(_vector, _addr..., _addr, _ist + 1, GATE_INTERRUPT, DPL0, __KERNEL_CS)
/* Task gate
任务门, DPL = 0
只能作内核态调用
*/
#define..., __KERNEL_CS)
它初始化一个中断门,权限是DPL3, 因此从用户态是允许发起系统调用的。