`
javatome
  • 浏览: 854209 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

《Linux那些事儿之我是USB》我是U盘(22)彼岸花的传说(一)

 
阅读更多

彼岸花,花语是悲伤的回忆。

很久很久以前,城市的边缘开满了大片大片的曼珠沙华,它的花香有一种魔力,可以让人想起自己前世的事情。守护曼珠沙华的是两个妖精,一个是花妖叫曼珠,一个是叶妖叫沙华。他们守候了几千年,可是从来没有见过面,因为开花时,就没有叶子,有叶子时没有花。他们疯狂地想念着彼此,并被这种痛苦折磨着。终于有一天,他们决定违背神的规定偷偷地见一次面。那一年的曼珠沙华红艳艳的花被惹眼的绿色衬托着,开得格外妖冶美丽。

曼珠和沙华受到惩罚,被打入轮回,并被诅咒永远也不能在一起,生生世世在人世间受到磨难。从那以后,蔓珠沙华又叫彼岸花,意思是开放在天国的花,它的花的形状像一只只在向天堂祈祷的手掌,可是再也没有在这个城市出现过。每年的秋彼岸期间(春分前后三天叫春彼岸,秋分前后三天叫秋彼岸)她会开在黄泉路上,曼珠和沙华的每一次转世在黄泉路上闻到彼岸花的香味就能想起前世的自己,然后发誓不分开,但只有在这一刻,因为他们会再次跌入诅咒的轮回,灵魂借着花的指引,走向幽冥。

Linux内核中引入了守护进程,也正是与这个传说对应,守护进程也叫内核精灵,当然,如果你是无神论者,你可以叫它为内核线程。我们来看具体的代码。

799行,调用了kthread_create()函数,kthread_create(usb_stor_control_thread, us, "usb-storage"),如果从前您对内核本身不是很熟悉,那这个函数就会让你有点儿头疼了。这个函数将会创建一个内核线程,而函数usb_stor_control_thread()将会执行,us将是传递给它的参数,对Linux内核不是很熟悉的话,可以将kthread_create看做类似于fork的函数。

实际上,简单一点说,kthread_create()这么一执行呢,就会有两个进程,一个是父进程,一个是子进程,子进程将会执行usb_stor_control_thread(),而us是作为usb_stor_control_thread函数的参数(实参),执行完usb_stor_control_thread()之后,子进程就结束了,它会调用exit()函数退出。而父进程继续顺着usb_stor_acquire_resources()函数往下走,kthread_create()函数对于父进程而言返回的是子进程的进程task_struct结构体指针,800行调用IS_ERR(th)判断返回的指针是否是错误代码,若是IS_ERR(th)为真,则调用PTR_ERR(th)读出实际的错误代码。

于是,咱们接下来必须再次兵分两路,分别跟踪父进程和子进程前进了。先看父进程,811行:

811 wake_up_process(th);

唤醒子进程,之所以需要唤醒子进程,是因为当你用kthread_create()创建一个子进程之后,它并不会立即执行,它要等待你唤醒了之后才会执行,所以这个函数就相当于田径运动中裁判的发令声。运动员跑得再快,他也要等到裁判发令声之后才会开始跑。那么我们来看子进程,也就是usb_stor_control_thread()函数,这个函数定义于drivers/usb/storage/usb.c中。
分享到:
评论

相关推荐

    Linux那些事儿之我是USB(第2版)

    ### Linux那些事儿之我是USB(第2版)关键知识点概览 #### 一、书籍概述 - **核心主题**:本书主要围绕Linux内核中的USB子系统展开,深入剖析其工作原理和技术细节。 - **目标读者**:面向Linux初学者、驱动开发者...

    linux那些事儿之我是USB.zip

    本压缩包文件"linux那些事儿之我是USB.zip"包含了深入理解Linux USB驱动及内核相关知识的九个文档,包括Block层、EHCI主机控制器、HUB、PCI、SCSI硬盘、Sysfs、UHCI、USB core以及U盘。这些文档旨在提供一个系统性的...

    Linux那些事儿之我是USB

    ### Linux那些事儿之我是USB —— USB技术在Linux下的实现与探索 #### 引言 在探讨《Linux那些事儿之我是USB》这篇文章之前,我们先简单回顾一下文章的背景及主要内容。该文由一位自称对Linux并无太多好感的作者...

    Linux那些事儿

    Linux那些事儿之我是U盘 Linux那些事儿之我是Hub Linux那些事儿之我是USB Core Linux那些事儿之我是UHCI Linux那些事儿之我是EHCI控制器 Linux那些事儿之我是PCI Linux那些事儿之我是SCSI硬盘 Linux那些事儿之我是...

    Linux那些事儿之我是U盘.pdf

    Linux那些事儿之我是U盘-有书签版.pdf

    linux那些事儿我是USB.pdf

    ### Linux下的USB驱动详解 #### 引言 在《Linux那些事儿之我是U盘》这篇诙谐幽默的技术文章中,作者以...对于想要深入了解Linux下USB驱动开发的读者来说,《Linux那些事儿之我是U盘》无疑是一篇值得仔细研读的文章。

    Linux那些事儿1-9合集

    读过《linux那些事儿之我是U盘》的人,都知道其风格,我就不多说了。 导读: linux那些事儿之我是U盘 linux那些事儿之我是HUB linux那些事儿之我是USB Core linux那些事儿之我是UHCI Linux那些事儿之我是EHCI主机控制...

    Linux那些事儿之我是U盘

    根据给定的信息,“Linux那些事儿之我是U盘”这一标题及描述主要聚焦于USB技术在Linux环境下的工作原理和技术细节。接下来,我们将基于这个主题展开深入探讨,涵盖USB技术的基本概念、USB在Linux系统中的实现机制...

    LINUX\Linux那些事儿系列

    3. **Linux那些事儿之我是U盘.pdf**: USB闪存驱动器,通常称为U盘,是常见的便携式存储设备。这部分可能讲述Linux如何识别、挂载和管理U盘,包括使用ums(USB Mass Storage)驱动程序,以及如何处理文件系统的读写...

    Linux那些事儿之全集

    导读.doc Linux那些事儿之我是Block层.pdf Linux那些事儿之我是EHCI主机控制器.pdf Linux那些事儿之我是Hub.pdf Linux那些事儿之我是USB_core.pdf Linux那些事儿之我是U盘.pdf等等 Linux那些事儿系列全在这里了

    Linux那些事儿系列.rar

    》包括《Linux那些事儿之我是Hub》、《Linux那些事儿之我是Sysfs》《Linux那些事儿之我是UHCI》、《Linux那些事儿之我是USB core》、《Linux那些事儿之我是U盘》,令人叹为观止的一个linux系列书籍。只能说,江山代...

    linux 那些事儿全集

    “Linux那些事儿之我是U盘.pdf”将关注通用串行总线(USB)闪存驱动器。这部分会解释Linux如何识别和处理USB闪存设备,包括文件系统的挂载和数据交换过程。 “Linux那些事儿之我是USB Core.pdf”涉及Linux内核的USB...

    linux的那些事儿全集

    Linux那些事儿之我是Block层 Linux那些事儿之我是EHCI主机控制器 Linux那些事儿之我是Hub Linux那些事儿之我是PCI Linux那些事儿之我是SCSI硬盘 Linux那些事儿之我是Sysfs ...Linux那些事儿之我是U盘

    Linux那些事儿之我是XXX全集.rar

    "Linux那些事儿之我是XXX全集"这个资源集合,旨在深入剖析Linux内核中的关键组件,特别是与USB(通用串行总线)相关的部分,包括USB core、U盘、UHCI、PCI、SCSI硬盘、Block层和Hub等核心概念。这些文件将通过源代码...

    linux那些事儿之我是U盘

    本文基于一篇幽默且深入的教程《Linux那些事儿之我是U盘》,该文章通过作者的亲身经历和深入浅出的讲解,介绍了Linux操作系统中USB存储设备的工作原理及相关技术细节。以下是对该文中涉及的重要知识点的梳理。 ####...

    linux那些事全集

    Linux那些事儿之我是U盘 Linux那些事儿之我是USB_core Linux那些事儿之我是UHCI Linux那些事儿之我是Sysfs Linux那些事儿之我是SCSI硬盘 Linux那些事儿之我是PCI Linux那些事儿之我是Hub Linux那些事儿之我是EHCI...

Global site tag (gtag.js) - Google Analytics