自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ming的博客

Linux Kernel-自顶向下,逐步求精

  • 博客(16)
  • 资源 (2)
  • 收藏
  • 关注

原创 Linux IO多路复用之select,epoll实现分析

一.select的实现在fs/select.c:1.我们来看fd_set的定义:可见fd_set最多能容纳1024个fd;当然也可以修改__FD_SETSIZE宏并编译内核来增大fd_set管理的fd数,但是这样会导致性能下降,具体原因见第3点。2.select的三个fd_set的参数inp,oup,exp会进行两次用户空间和内核空间之间的拷贝:第一次作为入参拷贝到内核空间,第二次将fd的就绪状态...

2018-06-04 23:35:09 382

原创 TCP之ACK/DUPACK

RFC中ACK/DUPACK的说明如下: The delayed ACK algorithm specified in [RFC1122] SHOULD be used by a TCP receiver. When using delayed ACKs, a TCP receiver MUST NOT excessively delay acknowledgments. S...

2018-05-20 18:41:56 4730

原创 BLOCK IO之PLUG/UNPLUG

    PLUG/UNPLUG即蓄流/泄流,蓄流的目的是为了提高bio在elevator queue合并和排序的机会,以提高 IO效率。    PLUG/UNPLUG对应blk_start_plug()和blk_finish_plug()两个函数,blk_start_plug()很简单,仅仅做了初始化:plug主要是在blk_queue_bio()里完成,bio先尝试merge,merge try...

2018-05-01 18:49:34 1330

原创 Page Cache之writeback

       由于page cache的存在,用户write时只是将数据缓存到了page cache,并标记为dirty,而没有真正写到块设备(如硬盘)上 。内核在某个时刻会将page cache里的dirty数据wirteback到块设备上,这就是内核的writeback机制。       writeback是通过delayed_work来实现的,在wb_init()函数里初始化了这个delay...

2018-04-30 18:32:10 1705

原创 Page Cache之Readahead

  readahead即预读,提前从块设备(如硬盘)里多读一些page缓存到page cache tree,以便下次读时能直接从page cache中命中,而不需要触发实际块设备的访问,提高IO效率。  那么什么时候readahead,readahead多少个page呢?     调用系统调用read时,先find page cache,若cache miss则进行sync readahead;若...

2018-04-30 11:42:45 2256

转载 linux 路由表设置 之 route 指令详解

目录(?)[+]使用下面的 route 命令可以查看 Linux 内核路由表。 [cpp] view plain copy # route  Destination     Gateway         Genmask Flags Metric Ref    Use Iface  192.168.0.0     *               255.255.25

2017-10-26 00:39:21 398

转载 Linux VRF(Virtual Routing Forwarding)的原理和实现

版权声明:本文转自http://blog.csdn.net/dog250/article/details/78069964?utm_source=tuicool&utm_medium=referral目录(?)[+]动机明天,是2017年9月24日,两年前的明天,我从上海第一次来到深圳参加面试,两年前的今天,此时我还在上海虹桥机场等候延误的飞机,两年前的今晚,我在深圳南

2017-10-10 00:08:09 7350

原创 USB驱动之XHCI驱动调试总结二

最近公司测试USB发现一个问题:将U盘插在单板上重启会概率性的出现检测U盘失败的情况,要重新拔插才能正确识别到U盘。这里将这个问题的分析做一个总结。首先查看日志,有如下错误打印:xHCI dying or halted, can't queue_commandcouldn't allocate usb_device从日志信息可以看出来,在检测到U盘后创建usb_device

2017-10-01 23:25:12 13366 2

原创 SD spec摘要

SD卡管脚:SD卡分别在SD模式和SPI模式的管脚描述:模式选择:总线协议:SD卡命令分为广播命令和点对点的命令两类:广播命令有的需要response,有的不需要response;点对点的命令都需要response,有的点数据,有的不带数据:命令格式:SD卡初始化流程:

2017-09-23 23:53:38 797

原创 USB驱动之XHCI驱动调试总结一

最近调公司一款芯片的USB接口的驱动,USB3.0的控制器,枚举失败,有如下错误打印:device descriptor read/8, error  -110即读设备描述符超时,通过USB协议分析仪抓包,发现host没有发出GET_DESCRIPTOR请求,分析怀疑:1.驱动发出的GET_DESCRIPTOR请求数据不对2.有cache一致性问题导致host取到的数据不对通过

2017-09-16 15:06:57 11594 5

原创 MMC驱动之SD卡

SD卡作为一种块设备,其驱动是挂在gendisk下实现的,对应代码在drivers/mmc/core/block.c两个主要的函数是mmc_blk_alloc,mmc_add_diskmmc_blk_alloc里调用alloc_disk分配了一个gendisk,调用blk_init_queue分配并初始化了一个request_queuemmc_add_disk调用device_add_

2017-08-27 10:23:36 670

原创 MMC驱动之mmc host

mmc host驱动的核心的数据结构是struct mmc_host,而对具体的mmc host驱动,是要实现host相关的操作函数集struct mmc_host_ops,比如卡的检测,写保护,发送命令请求等,然后创建一个mmc_host并添加进系统

2017-08-16 23:30:01 2595 1

原创 DMA映射

由于cpu cache的影响,设备在进行DMA操作时存在数据一致性的问题,kernel实现了一系列 api来解决dma一致性问题:include/linux/dma-mapping.hdma_alloc_coherent/dma_free_coherent:一致性DMA缓冲区申请和释放dma_map_single/dma_unmap_single:流式DMA映射dma_map_sg

2017-08-06 16:51:37 1566

原创 USB驱动之xhci

xhci是USB3.0的host规范,对于SoC的芯片,xhci host作为一个platform_device,对应的驱动是usb_xhci_driver:    dirvers/usb/host/xhci-plat.c        先看 xhci_init_driver:        这里用到了面向对象思想的多态,对hc_driver进行初始化。hc_driver是

2017-08-06 11:12:15 16798

原创 usb驱动之设备插拔检测

先看一张熟悉的图:usb_bus_topo.png (94.28 KB, 下载次数: 0)下载附件2017-07-22 23:25 上传可见usb设备都是接在hub上的,设备的检测自然跟hub相关了,这里以root hub为例。看usb hub驱动代码,跟usb设备检测相关的有如下几处(按在hub_probe中的调用顺序):1.INIT_WORK(&

2017-07-23 11:22:15 4573

原创 likely与unlikely

在可能性比较大的条件判断加likely(),反之加unlikely(),这样编译器会将可能性大的分支语句块紧跟在前面的代码后面,运行时就会减少指令跳转带来的性能下降。

2017-07-23 11:19:53 444

rfc791_Internet Protocol

RFC 791,Internet Protocol,IP协议规范,学习IP协议的参考

2018-01-20

IEEE 802.3-2015

802.3-2015 - IEEE Standard for Ethernet 以太网协议

2017-11-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除