![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux内核
文章平均质量分 73
kklvsports
这个作者很懒,什么都没留下…
展开
-
插入内核模块失败提示"Invalid module format"
产品需要编译自己的定制内核+内核模块,下载内核源码定制修改后rpmbuild方式(点击打开链接)编译升级内核,如下方式编译内核模块 make -C $(kernel_source) SUBDIRS=`pwd` modules;其中kernel_source直向内核源码,但是insmod插入编译的ko时,提示 “insmod: ERROR: could not insert module xx原创 2017-06-24 11:05:30 · 12405 阅读 · 1 评论 -
Linux开启Lockdep检测内核死锁
Lockdep是内核检测deadlock的手段,默认没有开启,需要make menuconfig增加配置开启,https://stackoverflow.com/questions/20892822/how-to-use-lockdep-feature-in-linux-kernel-for-deadlock-detection原创 2017-08-13 11:29:00 · 3898 阅读 · 0 评论 -
新内核模块引用其他模块中的全局变量,编译报错处理方式
1. 被引用模块中全局变量EXPORT_SYMBOL2. 引用模块的Makefile中设置KBUILD_EXTRA_SYMBOLS=/path/to/be/quotedko/Module.symvers;即KBUILD_EXTRA_SYMBOLS指向被引用ko的Module.symvers原创 2017-08-13 11:44:41 · 3355 阅读 · 0 评论 -
记一次内核soft lockup的定位记录
产品大用户场景下运行一段时间即报“xxx localhost kernel: BUG: soft lockup - CPU#0 stuck for 23s! [xxx:15825]” 错误,内核日志调用栈显示是在获取锁时失败,检查[ 4663.527008] device p1p1 entered promiscuous mode[ 4712.445原创 2017-08-12 12:23:22 · 1691 阅读 · 0 评论 -
Centos7 非对称路由导致收到sctp init建链报文不响应
Centos7主机上创建sctp协议socket监听192.168.10.14地址36412端口,10.10.10.227主机运行sctp客户端程序connect 192.168.10.14:36412地址。Centos7主机接口配置如下[root@localhost ~]# ifconfig ens32: flags=4163 mtu 1500 inet 192.168原创 2017-12-24 15:24:29 · 1373 阅读 · 0 评论 -
Linux 内核收发包流程
收包流程:传统方式和NAPI方式收包流程是有差异的,如图所示。传统收包是中断,驱动处理完后直接调用netif_rx将报文送入内核处理,内核将报文skb挂到该CPU的softnet_data结构input_pkt_queue队列上, 为了统一传统收包和NAPI设备收包的处理,内核为所有不使用NAPI的驱动程序提供一个虚拟设备,叫做积压设备,每个CPU一个积压设备,对应结构softnet_...原创 2017-08-13 12:05:11 · 9918 阅读 · 0 评论 -
libvirt xml定义虚拟机方式,如何定义使用virtio网卡
默认情况下xml中定义的网络设备是rtl8139,如果要提高性能可以选择使用virtio虚拟化网卡,xml中如何配置?在xml中<interface type="xx">字段下 <model type="virtio"/> 这相当于前端驱动,是在VM中使用的,后端驱动可以用qemu <driver name="qemu"/> 或者vhost方式&l...原创 2018-03-15 20:06:08 · 1676 阅读 · 0 评论 -
Linux netfilter HOOK机制
Linux系统上TCP/IP协议栈在内核态(DPDK等在用户态收包情况例外),用户态如果想要干预报文的处理就需要向内核态注入hook函数,如Linux的iptables,netfilter框架中的HOOK机制即是提供该功能的。通过之前分析ip报文的内核处理路径点击打开链接可知,内核中有如下5个hook点,他们和iptables中chain一一对应。对应hook函数在内核中是NF_HOOK调...原创 2018-05-11 21:00:59 · 852 阅读 · 0 评论 -
netfilter hook实验
上一篇点击打开链接介绍了netfilter的机制,本篇通过一个极简单的内核模块实践一下该机制。原创 2018-05-11 22:23:24 · 814 阅读 · 0 评论 -
ioremap
ioremap将物理地址转换为内核虚拟地址,通常内核态设备驱动程序会使用这个虚拟地址访问寄存器,访问的内核接口诸如readb/readw/readl/writeb/writew/writel等。[Sparse ](http://www.voidcn.com/article/p-myfoctyx-dh.html)...原创 2018-11-07 16:59:20 · 2241 阅读 · 0 评论 -
PCI/PCIE之总线、设备枚举
先思考一个问题,系统配置PCI设备的时候,需要指明Bus Device Function Register构成的地址,但是系统如何知道主板上有多少总线,设备呢?整个系统的PCI拓扑需要系统去枚举遍历,使用的深度优先遍历算法,详见PCI的6.6.2章节。下面以Linux内核代码分析来加深PCI配置的理解。按照参考3的描述,pci相关的初始化应该是如下顺序。pcibus_class_init()...原创 2018-11-14 15:30:17 · 5895 阅读 · 0 评论 -
Linux进程调度
说明如下引用代码对应的kernel版本是2.6.34I. Linux进程调度的函数schedule,先看一下schedule的实现。/* * schedule() is the main scheduler function. */asmlinkage void __sched schedule(void){ struct task_struct *prev, *next; u原创 2016-09-11 20:55:28 · 723 阅读 · 0 评论 -
Linux 进程状态转换
1. Linux进程状态和状态转换原创 2016-08-21 16:48:35 · 3912 阅读 · 1 评论 -
kmalloc内存申请标志及应用场景
场景标志进程上下文,可以睡眠GFP_KERNEL进程上下文,不可以睡眠GFP_ATOMIC中断处理程序GFP_ATOMIC软中断GFP_ATOMICtaskletGFP_ATOMIC用于DMA的内存,可以睡眠GFP_DMA|GFP_KERNEL用于DMA的内存,不可以睡眠GFP_DM原创 2016-08-17 21:08:15 · 631 阅读 · 0 评论 -
Linux内存寻址和内存管理(x86 IA-32架构)
http://www.cnblogs.com/zszmhd/archive/2012/08/29/2661461.html转载 2014-05-10 15:19:01 · 727 阅读 · 0 评论 -
自己动手写一个PC上运行的极简内核
http://www.geekfan.net/8663/转载 2014-04-27 18:58:53 · 1317 阅读 · 0 评论 -
Linux 设备驱动模型,I2C驱动,sys文件系统(1)
Linux sys文件系统和驱动模型是紧密相关的,本系列以I2C驱动为例总结整理。原创 2015-08-15 21:48:32 · 855 阅读 · 0 评论 -
Linux 驱动注册(driver_register)流程probe方法的选择
driver_register -->bus_add_driver-->driver_attach-->driver_attach-->drv.probe上面的调用顺序是驱动注册的流程,最终会调用drv->probe方法,对比plant_form总线和pci总线发现,plant_form总线的probe方法为空,pci总线的probe方法不为空(对比platform_bus_type和pci_原创 2016-08-28 22:32:13 · 2526 阅读 · 0 评论 -
Linux下ovs bridge等如何收从内核接管报文处理
参考Linux内核收包流程,函数调用链是:硬件中断 --&amp;amp;amp;amp;gt;do_IRQ–&amp;amp;amp;amp;gt;handle_irq–&amp;amp;amp;amp;gt;e1000_intr_msix_rx–&amp;amp;amp;amp;gt;__napi_schedule(&amp;amp;amp;amp;amp;adapter-&amp;amp;amp;amp原创 2018-11-16 11:15:23 · 806 阅读 · 0 评论