1
Linux內核爲用戶模式和內核模式進程提供了單獨的堆棧,並且還有一些特殊的堆棧。一這個特殊的棧是中斷堆棧放置在irq_stack_union
大小16千字節:中斷堆棧的堆棧指針
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;
爲什麼我們減去64個字節從這裏irq_stack_union.irq_stack的結束?
謝謝。