gpt4 book ai didi

linux - 中断栈的栈指针

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:13 25 4
gpt4 key购买 nike

Linux 内核为用户模式和内核模式进程提供了独立的堆栈,还有一些特殊的堆栈。其中一个特殊堆栈是大小为 16 KB 的中断堆栈,位于 irq_stack_union 中:

union irq_stack_union {
char irq_stack[IRQ_STACK_SIZE];
struct {
char gs_base[40];
unsigned long stack_canary;
};
};

有指向这个堆栈的指针的定义 - irq_stack_ptr。据我正确理解,这个 irq_stack_ptr 必须指向 irq_stack 的末尾,或者换句话说指向 irq_stack + IRQ_STACK_SIZE - 1,但是 irq_stack_ptr 的定义> 是:

DEFINE_PER_CPU(char *, irq_stack_ptr) =
init_per_cpu_var(irq_stack_union.irq_stack) + IRQ_STACK_SIZE - 64;

这里为什么要从irq_stack_union.irq_stack的末尾减去64字节?

谢谢。

最佳答案

用作边距以避免不小心越界?

关于linux - 中断栈的栈指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32159700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com