User Tools

Site Tools


mywiki:linux:linux_kernel_notes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
mywiki:linux:linux_kernel_notes [2015/04/15 15:33] – [Kernel Context knowledge] 180.87.185.80mywiki:linux:linux_kernel_notes [2019/09/15 18:55] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== Spin Lock ====== +| [[http://www.linux-mips.org/wiki/Linux/MIPS_Porting_Guide|MIPS Porting Guide]] |
- +
- +
-===== Table of Minimum Spin Lock Requirements ===== +
- +
- +
-The following table lists the minimum locking requirements between various contextsIn some cases, the same context can only be running on one CPU at a time, so no locking is required for that context (ega particular thread can only run on one CPU at a time, but if it needs shares data with another thread, locking is required). \\ +
- +
-Remember the advice above: you can always use spin_lock_irqsave(), which is a superset of all other spinlock primitives. \\ +
- +
- +
-|  | IRQ Handler A | IRQ Handler B | Softirq A | Softirq B | Tasklet A | Tasklet B | Timer A | Timer B | User Context A | User Context B | +
-| IRQ Handler A | None | +
-| IRQ Handler B | spin_lock_irqsave | None | +
-| Softirq A | spin_lock_irq | spin_lock_irq | spin_lock | +
-| Softirq B | spin_lock_irq | spin_lock_irq | spin_lock | spin_lock | +
-| Tasklet A | spin_lock_irq | spin_lock_irq | spin_lock | spin_lock | None | +
-| Tasklet B | spin_lock_irq | spin_lock_irq | spin_lock | spin_lock | spin_lock | None | +
-| Timer A | spin_lock_irq | spin_lock_irq | spin_lock | spin_lock | spin_lock | spin_lock | None | +
-| Timer B | spin_lock_irq | spin_lock_irq | spin_lock | spin_lock | spin_lock | spin_lock | spin_lock | None | +
-| User Context A | spin_lock_irq | spin_lock_irq | spin_lock_bh | spin_lock_bh | spin_lock_bh | spin_lock_bh | spin_lock_bh | spin_lock_bh | None | +
-| User Context B | spin_lock_irq | spin_lock_irq | spin_lock_bh | spin_lock_bh | spin_lock_bh | spin_lock_bh | spin_lock_bh | spin_lock_bh | down_interruptible None | +
 ===== Kernel Context knowledge =====  ===== Kernel Context knowledge ===== 
 | process context | includes user context, kernel thread, work queue | | process context | includes user context, kernel thread, work queue |
Line 31: Line 9:
 | Tasklet | A dynamically-registered software interrupt, which is guaranteed to only run on one CPU at a time | | Tasklet | A dynamically-registered software interrupt, which is guaranteed to only run on one CPU at a time |
 | Timer | which is running at (or close to) a given time. When running, it is just like a tasklet (in fact, they are called from the TIMER_SOFTIRQ). | | Timer | which is running at (or close to) a given time. When running, it is just like a tasklet (in fact, they are called from the TIMER_SOFTIRQ). |
- 
- 
  
  
mywiki/linux/linux_kernel_notes.1429083204.txt.gz · Last modified: (external edit)