- 博客(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
1572
原创 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
1178
原创 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
790
原创 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
1327
原创 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
7116
原创 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
9350
原创 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
2280
原创 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
1242
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人