is more important to select tasklets. The tasklet interface is simple, and the two tasklets of the same type cannot be executed at the same time, so the implementation is simpler. If you need to postpone the task to the context of the process, you can only select a work queue. If sleep is not required, the soft interrupt and tasklet may be more appropriate. In addition, the maximum overhead is caused by the work queue. Of course, this is relative. In most cases, the work queue can provide suffi
Understanding of the upper half and lower half of the Linux kernel-general Linux technology-Linux programming and kernel information. The following is a detailed description. The activities of the operating system core during running can be divided into two parts: top half (top hal
This article is reproduced to: http://linux.cn/thread-5510-1-1.html
This article mainly from the user's point of view to the Linux 2.6 kernel of the lower half of the mechanism SOFTIRQ, tasklet and Workqueue analysis, for these three mechanisms in the kernel of the implementation of the concrete does not carry out in-depth analysis, if the reader is interested to understand, You can read the relevant parts
6.1 lower half
The lower half of the task is to execute the work closely related to the interrupt processing but the interrupt processing program itself does not execute. Although there are no strict rules for division between the upper half and the
Today, I will continue to read chapter 4 "the lower half and the work to be executed after the push". I wrote "Implementation of Soft Interrupt" the day before yesterday, but it was not saved. So I wrote it again today.
Let's start from scratch. We usually cut the interrupt processing process into two parts or two halves. The interrupt handler is the top half (to
tasklet codes can be executed concurrently on multiple CPUs at the same time , unlike the BH mechanism, which must be strictly serialized (that is, only one CPU can perform BH functions in the system at the same time).Soft Interrupt is the argument that interrupts the lower half, the tasklet mechanism is a special example of soft interrupts, and the soft interrupt vectors HI_SOFTIRQ and TASKLET_SOFTIRQ are
First, you need to understand the concept of Interruption: An "interruption" is just a signal. When the hardware needs to get attention from the processor, it can send this signal. The kernel maintains a registry for the interrupt signal line, which is similar to the I/O port registry.
The module must request an interrupt channel (or interrupt request IRQ) before using the interrupt, and then release the channel after using it. The APIs used are request_irq () and free_irq (). Note that it is
Copyright Notice: respect for the original. Reprint please retain the Source: Blog.csdn.net/shallnet, the article is only for learning exchange, do not use for commercial use " The interrupt handler executes asynchronously, which interrupts other important code, and the other interrupts at the interrupt peer are masked when it is executed, and all other interrupts on the current processor are likely to be masked out, and interrupt handlers cannot be blocked, so the interrupt processing needs t
Interrupt processing is divided into two parts: the interrupt handler is the upper half, it receives an interrupt, executes immediately, but only does the work with strict time limits, while another part called the lower half mainly does the work that is allowed to be done later. This second half is the focus of today.
"copyright notice: respect for the original, reproduced please retain the source: Blog.csdn.net/shallnet, the article is only for learning exchange, do not use for commercial use " The interrupt handler executes asynchronously, interrupting other important code, which is blocked by other interrupts at runtime, and all other interrupts on the current processor may be masked, and interrupt handlers cannot be blocked, so the interrupt processing needs to be ended as soon as possible. Due to these
" copyright notice: respect for the original, reproduced please retain the source: Blog.csdn.net/shallnet, the article is only for learning exchange, do not use for commercial path " NBSP;NBSP; tasklet is a lower-half mechanism implemented with soft interrupts. compared to soft interrupts, the Tasklet interface is more simple and convenient, and the lock protection requirements are low. Task
) source code1 void __init softirq_init (void)2{3 OPEN_SOFTIRQ ( TASKLET_SOFTIRQ, Tasklet_action, NULL); 4 Open_softirq (HI_SOFTIRQ, tasklet_hi_action, NULL); 5 }1.2.4 Tasklet is implemented through soft interrupts.HI_SOFTIRQ and TASKLET_SOFTIRQ are key to Tasklet's implementation through soft interrupts, as shown in relationship 2-1.Figure 1-1 Tasklet the connection between data structures implemented by soft interruptsThe Tasklet mechanism creates HI_SOFTIRQ or TASKLET_SOFTIRQ two types
Let's start by explaining why the kernel divides interrupts into the upper and lower partsBecause the interrupt itself interrupts normal program execution, task scheduling cannot be performed in the interrupt, so the interrupt needs to be returned quickly, but some operations must be performed in the interrupt.If the kernel needs to perform a hardware-related, time-sensitive, cannot be interrupted operation, then these operations should be placed in t
Ligerui has been studied for a while, and the overall feeling is good. Based on jquery development, the Framework provides a wide range of UI components, especially ligerui tables, with powerful functions.
A small problem occurs when you use ligerui to edit a table.
When the data is not filled with the table, the display effect is no problem.
If the table is filled with data, and the number of rows reaches the maximum value, the white square m
Work Executed in the lower half and after the push
4. tasklet
Tasklet is implemented through Soft Interrupt, which is represented by two types of Soft Interrupt: hi_softirq and tasklet_softirq. The only difference between the two is that the former takes precedence over the latter.
Tasklet is represented by the tasklet_struct struct. Each struct represents a tasklet, which is defined in
Struct task
Half-integer divider: The counter is triggered by the rising edge, so when the count is N-1, the Count trigger is flipped, the clock's falling edge changes to the rising edge, so the count value is 0, so every time the n+0.5-frequency clock is generated, the trigger clock is flipped once. , using XOR gate and 2-way module design pulse deduction circuit, pulse deduction is the input frequency and 2 output difference or results. ModuleFenpin (clk,rst_
"copyright notice: respect for the original, reproduced please retain the source: Blog.csdn.net/shallnet, the article is only for learning exchange, do not use for commercial use " another of the lower half of the task force is to postpone the work in the form of execution. Unlike soft interrupts and tasklet, the work queue is pushed back to a kernel thread for execution, and the nextThe
The concept of 1,taskletTasklet is a soft interrupt implementation of a lower half of the mechanism, tasklet by the two class soft interrupt representatives, HI_SOFTIRQ and TASKLET_SOFTIRQ, the difference is the HI_SOFTIRQ type of soft interrupt prior to tasklet_ Soft interrupts of the SOFTIRQ type are performed first.Tasklet is represented by the tasklet_struct structure, and each structure represents a si
Recently do the project with Artdialog this JS framework, but the first IE under the Mask layer display is not complete, the study of half a day, on the internet did not find a solution, their own research under the source, finally solved.Before changing:650) this.width=650; "src=" Http://s3.51cto.com/wyfs02/M00/5D/EF/wKiom1UnfgzRB7yeAANRy5t-kok178.jpg "title=" Qq20150410153856.jpg "alt=" Wkiom1unfgzrb7yeaa
One: Work queue conceptThe work queue can be pushed back to a kernel thread to execute, the work queue runs in the context of the process, the work queue is running reschedule, or even the sleep kernel driver typically gives the lower half to the kernel default worker thread.Two: Steps to use a work queue in a drive1, declare a WORK_STRUCT structure[CPP]View Plaincopy
struct work_struct work;
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.