过硬件中断)的“软件中断”将运行( ``kernel/softirq.c`` )。
此处完成了许多真正的中断处理工作。在向SMP过渡的早期,只有“bottom halves下半
-部”(BHs)机制,无法利用多个CPU的优势。在从那些一团糟的就电脑切换过来后不久,
+部”(BHs)机制,无法利用多个CPU的优势。在从那些一团糟的旧电脑切换过来后不久,
我们放弃了这个限制,转而使用“软中断”。
``include/linux/interrupt.h`` 列出了不同的软中断。定时器软中断是一个非常重要
.. warning::
- “tasklet”这个名字是误导性的:它们与“任务”无关,可能更多与当时
- 阿列克谢·库兹涅佐夫享用的糟糕伏特加有关。
+ “tasklet”这个名字是误导性的:它们与“任务”无关。
你可以使用 :c:func:`in_softirq()` 宏( ``include/linux/preempt.h`` )来确认
是否处于软中断(或子任务)中。
与 :c:func:`put_user()` 和 :c:func:`get_user()` 不同,它们返回未复制的
数据量(即0仍然意味着成功)。
-【是的,这个愚蠢的接口真心让我尴尬。火爆的口水仗大概每年都会发生。
+【是的,这个讨厌的接口真心让我尴尬。火爆的口水仗大概每年都会发生。
—— Rusty Russell】
这些函数可以隐式睡眠。它不应该在用户上下文之外调用(没有意义)、调用时禁用中断
Linus和其他开发人员有时会更改开发内核中的函数或结构体名称;这样做不仅是为了
让每个人都保持警惕,还反映了一个重大的更改(例如,不能再在打开中断的情况下
-调用,或者执行额外的检查,或者不执行以前捕获的检查)。通常这会附带一个linux
-内核邮件列表中相当全面的注释;请搜索存档以查看。简单地对文件进行全局替换通常
-会让事情变得 **更糟** 。
+调用,或者执行额外的检查,或者不执行以前捕获的检查)。通常这会附带发送一个
+相当全面的注释到相应的内核邮件列表中;请搜索存档以查看。简单地对文件进行全局
+替换通常只会让事情变得 **更糟** 。
初始化结构体成员
------------------
为了让你的东西更正式、补丁更整洁,还有一些工作要做:
-- 搞清楚你在谁的地界儿上干活。查看源文件的顶部、 ``MAINTAINERS`` 文件以及
+- 搞清楚你修改的代码属于谁。查看源文件的根目录、 ``MAINTAINERS`` 文件以及
``CREDITS`` 文件的最后一部分。你应该和此人协调,确保你没有重新发明轮子,
或者尝试一些已经被拒绝的东西。
“obj-$(CONFIG_xxx) += xxx.o”。语法记录在
Documentation/kbuild/makefiles.rst 。
-- 如果你做了一些有意义的事情,那可以把自己放进 ``CREDITS`` ,通常不止一个
- 文件(无论如何你的名字都应该在源文件的顶部)。维护人员意味着您希望在对
- 子系统进行更改时得到询问,并了解缺陷;这意味着对某部分代码做出更多承诺。
+- 如果你认为自己做了一些有意义的事情,可以把自己放进 ``CREDITS`` ,通常不
+ 止一个文件(无论如何你的名字都应该在源文件的顶部)。 ``MAINTAINERS``
+ 意味着您希望在对子系统进行更改时得到询问,并了解缺陷;这意味着对某部分
+ 代码做出更多承诺。
- 最后,别忘记去阅读 Documentation/process/submitting-patches.rst ,
也许还有 Documentation/process/submitting-drivers.rst 。