2
我知道Linux內核在2.6.32之前將線程內核棧作爲ISR棧,在2.6.32之後,內核使用分離棧,如果錯誤請糾正我。 你會告訴我什麼時候ISR堆棧被設置/設置,或者如果有的話會被銷燬。或者告訴我源文件名和行號?提前致謝。Linux內核中的硬件中斷堆棧上半部分?
更新時間2014年10月17日:
有幾種類型的Linux軟件棧的。下面是我知道的3個主要(不是全部)。
- 用戶空間處理堆棧,每個用戶空間任務都有自己的堆棧, 這通過創建MMAP()被創建任務時。
- 用於用戶空間任務的內核堆棧,用於每個用戶空間任務,這是在do_fork() - > copy_process() - > dup_task_struct() - > alloc_thread_info()中創建並用於system_call的 。
- 棧硬件中斷(上半部分),一個用於每個CPU(2.6)之後,在 拱/ 86 /內核/ irq_32.c定義:
DEFINE_PER_CPU(struct irq_stack *, hardirq_stack);
do_IRQ() - > handle_irq() - > execute_on_irq_stack()開關中斷堆棧
請讓我知道這些是否正確。