From 193bc74254a7519d6bc7a86cb24fc0336b962470 Mon Sep 17 00:00:00 2001 From: Dongliang Mu Date: Mon, 19 Mar 2018 22:31:59 -0400 Subject: [PATCH] modify interrupts from checking --- SyncPrim/linux-sync-6.md | 4 ++-- Timers/linux-timers-4.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SyncPrim/linux-sync-6.md b/SyncPrim/linux-sync-6.md index b62e45a..ffebae7 100644 --- a/SyncPrim/linux-sync-6.md +++ b/SyncPrim/linux-sync-6.md @@ -303,7 +303,7 @@ static inline void raw_write_seqcount_end(seqcount_t *s) and in the end we just call the `spin_unlock` macro to give access for other readers or writers. -That's all about `sequential lock` mechanism in the Linux kernel. Of course we did not consider full [API](https://en.wikipedia.org/wiki/Application_programming_interface) of this mechanism in this part. But all other functions are based on these which we described here. For example, Linux kernel also provides some safe macros/functions to use `sequential lock` mechanism in [interrupt handlers](https://en.wikipedia.org/wiki/Interrupt_handler) of [softirq](https://0xax.gitbooks.io/linux-insides/content/interrupts/interrupts-9.html): `write_seqclock_irq` and `write_sequnlock_irq`: +That's all about `sequential lock` mechanism in the Linux kernel. Of course we did not consider full [API](https://en.wikipedia.org/wiki/Application_programming_interface) of this mechanism in this part. But all other functions are based on these which we described here. For example, Linux kernel also provides some safe macros/functions to use `sequential lock` mechanism in [interrupt handlers](https://en.wikipedia.org/wiki/Interrupt_handler) of [softirq](https://0xax.gitbooks.io/linux-insides/content/Interrupts/linux-interrupts-9.html): `write_seqclock_irq` and `write_sequnlock_irq`: ```C static inline void write_seqlock_irq(seqlock_t *sl) @@ -347,6 +347,6 @@ Links * [x86_64](https://en.wikipedia.org/wiki/X86-64) * [Timers and time management in the Linux kernel](https://0xax.gitbooks.io/linux-insides/content/Timers/) * [interrupt handlers](https://en.wikipedia.org/wiki/Interrupt_handler) -* [softirq](https://0xax.gitbooks.io/linux-insides/content/interrupts/interrupts-9.html) +* [softirq](https://0xax.gitbooks.io/linux-insides/content/Interrupts/linux-interrupts-9.html) * [IRQ](https://en.wikipedia.org/wiki/Interrupt_request_\(PC_architecture\)) * [Previous part](https://0xax.gitbooks.io/linux-insides/content/SyncPrim/sync-5.html) diff --git a/Timers/linux-timers-4.md b/Timers/linux-timers-4.md index 067752c..dd5ba29 100644 --- a/Timers/linux-timers-4.md +++ b/Timers/linux-timers-4.md @@ -240,7 +240,7 @@ The last step in the `init_timers` function is the call of the: open_softirq(TIMER_SOFTIRQ, run_timer_softirq); ``` -function. The `open_softirq` function may be already familiar to you if you have read the ninth [part](https://0xax.gitbooks.io/linux-insides/content/interrupts/interrupts-9.html) about the interrupts and interrupt handling in the Linux kernel. In short words, the `open_softirq` function defined in the [kernel/softirq.c](https://github.com/torvalds/linux/blob/16f73eb02d7e1765ccab3d2018e0bd98eb93d973/kernel/softirq.c) source code file and executes initialization of the deferred interrupt handler. +function. The `open_softirq` function may be already familiar to you if you have read the ninth [part](https://0xax.gitbooks.io/linux-insides/content/Interrupts/linux-interrupts-9.html) about the interrupts and interrupt handling in the Linux kernel. In short words, the `open_softirq` function defined in the [kernel/softirq.c](https://github.com/torvalds/linux/blob/16f73eb02d7e1765ccab3d2018e0bd98eb93d973/kernel/softirq.c) source code file and executes initialization of the deferred interrupt handler. In our case the deferred function is the `run_timer_softirq` function that is will be called after a hardware interrupt in the `do_IRQ` function which defined in the [arch/x86/kernel/irq.c](https://github.com/torvalds/linux/blob/16f73eb02d7e1765ccab3d2018e0bd98eb93d973/arch/x86/kernel/irq.c) source code file. The main point of this function is to handle a software dynamic timer. The Linux kernel does not do this thing during the hardware timer interrupt handling because this is time consuming operation.