自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pandy_gao的博客

追梦人

  • 博客(8)
  • 收藏
  • 关注

原创 Linux 内核中的kmalloc和slab分配器

在linux内核中我们经常使用kmalloc()进行内存分配,那么kmalloc()是如何分配的呢? 本文主要对kmalloc()和slab内存分配器进行分析。废话不多说,直接上code:devm_kzalloc(&pdev->dev, sizeof(*lpi2c_imx), GFP_KERNEL);{ #define GFP_KERNEL      (__GFP_RECLAIM ...

2018-02-12 12:24:00 1461

原创 Linux ioremap分析

ioremap()将物理地址转换为虚拟地址 ->ioremap(addr, size) arch/arm64/include/asm/io.h->__ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE)){ #define PROT_DEVICE_nGnRE (PROT_DEFAULT | PTE_PXN | PTE_UXN | ...

2018-02-12 10:39:22 1098

原创 Linux内核中网络数据的传输

分析网络数据的传输,首先需要了解TCP/IP模型:APPLICATION <=> SOCKET <=>TCP/UDP <=> IPv4/IPv6 <=> MAC <=> PHYSOCKET: net/socket.c熟悉socket编程的人都知道网络数据通过sock进行传输,比如write/sendmsg(sock, buff, size...

2018-02-12 10:28:14 730

原创 Linux内核中网络数据的接收

1. Linux网络数据的接收始于中断,本文用wifi驱动ath10k进行分析,中断处理函数为 ath10k_pci_interrupt_handler,那么中断处理函数是如何与网卡关联?要了解这个 问题就得了解pcie接口网卡的注册流程: ->ath10k_pci_init drivers/net/wireless/ath/ath10k/pci.c ->ath10k_pci_p...

2018-02-12 10:19:43 1147

原创 Linux中断的响应流程

原创文章, 转载请注明出处。这篇文章主要讨论的话题是当中断发生时Linux内核是如何处理中断的。当CPU检测到中断的时候,linux内核首先会跳转至arch/arm/kernel/entry-armv.S中进行处理,然后切换到IRQ_MODE(vector_stub   irq, IRQ_MODE, 4),最后运行到irq_handler。code如下:vector_irq: irq中断的入口, ...

2018-02-11 12:12:47 7005

原创 Linux中断申请流程

原创文章,转载请注明出处:本文主要分析linux内核中设备驱动程序是如何申请中断的。中断的申请分为两个阶段,接下来分别对两个阶段进行分析。第一阶段:获取软件中断号,irq = platform_get_irq(pdev, 0)->of_irq_get(dev->dev.of_node, num); drivers/base/platform.c{ 1. 解析dts中device no...

2018-02-11 12:06:15 8911

原创 Linux GIC 的初始化

原创文章,转载请注明出处.Linux中断的初始化流程:Linux kernel的启动入口是start_kernel(), 在init/main.c中,start_kernel()中有一系列初始化操作,比如:boot_cpu_init(),setup_arch(&command_line),mm_init()等, 本文主要分析init_IRQ()__irqchip_of_table实际为静态...

2018-02-11 12:00:14 2138

原创 Linux Platform驱动的注册流程

原创文章, 转载请注明出处。1 platform device是如何挂载在platform_bus上:linux platfrom驱动在加载的时候都有相应的优先级, linux定义了不同的initcall接口表示不同的优先级,比如:core_initcall,arch_initcall。本文从arch_initcall_sync(of_platform_default_populate_init)...

2018-02-11 11:49:26 1185

空空如也

空空如也

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

TA关注的人

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