linux kernel
文章平均质量分 79
carltraveler
这个作者很懒,什么都没留下…
展开
-
linux2.6内核kthread 内核线程机制解析(自己写的额注释)
struct kthread {int should_stop;struct completion exited;};struct kthread_create_info{/* Information passed to kthread() from kthreadd. */in原创 2011-07-08 12:47:51 · 1558 阅读 · 0 评论 -
git常用操作
1.查看对象内容 git show $id (id如果是commit,可以看到差别)2. git log -S'foo()' 查看commit的修改中,存在字符串foo()的提交,注意''里面不是正则表达式3. git log --pretty=format:'%h : %s' --graph 更简洁的git log --pretty=oneline --原创 2016-03-15 10:29:01 · 841 阅读 · 0 评论 -
cpufreq变频子系统
早在2.6内核之初,linux就已经开始支持变频节能技术,实现了一个cpufreq内核子系统来兼容市面上的变频CPU技术。该子系统引入了governor和driver的概念,如下图: cpufreq子系统实现了策略和机制分离的设计架构。 CPU-specific drivers(又称为scaling_driver),它是具体的变频机制实转载 2016-04-08 15:53:58 · 925 阅读 · 0 评论 -
linux内核抢占实现机制分析
Linux内核抢占实现机制分析 Sailor_forever sailing_9806@163.com转载请注明http://blog.csdn.net/sailor_8318/archive/2008/09/03/2870184.aspx【摘要】本文详解了Linux内核抢占实现机制。首先介绍了内核抢占和用户抢占的概念和区别,接着分析了不可抢占内核的特点及实时系统中实现内转载 2017-02-07 13:54:33 · 485 阅读 · 0 评论 -
linux arp代理,DMZ与NAT
Linux系统缺省并没有打开IP转发功能,要确认IP转发功能的状态,可以查看/proc文件系统,使用下面命令:cat /proc/sys/net/ipv4/ip_forward如果上述文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。要想打开IP转发功能,可以直接修改上述文件:echo 1 > /proc/sys/net/ipv4/ip_forwa转载 2017-05-04 11:17:27 · 1306 阅读 · 0 评论 -
netfilter filire wall frame
原创 2017-05-18 18:40:52 · 394 阅读 · 0 评论 -
Linux nf_conntrack连接跟踪的实现
连接跟踪,顾名思义,就是识别一个连接上双方向的数据包,同时记录状态。下面看一下它的数据结构:struct nf_conn { /* Usage count in here is 1 for hash table/destruct timer, 1 per skb, plus 1 for any connection(s) we are `master' for */转载 2017-05-19 11:43:21 · 1806 阅读 · 0 评论 -
RCU机制及发布订阅
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[-] 简介 宽限期 订阅发布机制 数据读取的完整性 小结 简介 RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用。RCU主要针对的数据对象是链表,目的是提高遍历读取数据转载 2017-06-29 13:45:39 · 690 阅读 · 0 评论 -
QEMU和KVM 中断处理过程
本文讲述一个网络数据包从到达物理网卡,一直到中断注入给VM的整个过程。为了讲述清晰,假设宿主物理机有两个物理CPU,分别为CPU0和CPU1。假设GuestOS运行在CPU1上,物理网卡接到数据包后把中断请求发送到CPU0.1.网络数据包Package到达物理网卡NIC, NIC收到数据包后,向CPU0发送中断请求,通知CPU0有网络数据包到达。2.CPU0收到转载 2017-07-31 11:09:03 · 1273 阅读 · 0 评论 -
Linux内核工程导论——网络:Filter(LSF、BPF、eBPF)
概览 LSF(Linux socket filter)起源于BPF(Berkeley Packet Filter),基础从架构一致,但使用更简单。LSF内部的BPF最早是cBPF(classic),后来x86平台首先切换到eBPF(extended),但由于很多上层应用程序仍然使用cBPF(tcpdump、iptables),并且eBPF还没有支持很多平台,所以内核提供了从cBPF向eB转载 2016-01-11 13:07:33 · 1773 阅读 · 0 评论 -
如何选择 Linux 上的跟踪器
转载一片目前kernel tracing比较清晰的文章。跟踪器(tracer)是一个高级的性能分析和诊断工具,但是不要让这名词唬住你,如果你使用过 strace 和 tcpdump,其实你就已经使用过跟踪器了。系统跟踪器可以获取更多的系统调用和数据包。它们通常能跟踪任意的内核和应用程序。有太多的 Linux 跟踪器可以选择。每一种都有其官方的(或非官方的)的卡通的独角兽吉祥物,足够转载 2016-01-11 17:38:05 · 915 阅读 · 0 评论 -
inux2.6内核中unlikely和like函数的解释
//test_builtin_expect.c #define LIKELY(x) __builtin_expect(!!(x), 1)#define UNLIKELY(x) __builtin_expect(!!(x), 0)int test_likely(int x){ if原创 2011-07-08 12:49:35 · 851 阅读 · 0 评论 -
以611_I2S为例 跟踪Platform架构驱动——设备注册篇
atic struct resource sep_iis_resource[] = { //很肯能会有多个[0]表示第一个元素 [0] = { .start = I2S_BASE, .end = I2S_BASE + SZ_4K -1, .fla原创 2011-07-08 14:42:06 · 1042 阅读 · 1 评论 -
linux2.6.32_软件时钟架构
/*软件时钟可分为两种类型:仅仅激活一次激活多次或者周期性激活多次激活的实现机制就是要在软件时钟处理函数中重新设置软件时钟的到期时间为将来的一个时间,这个过程通过调用 mod_timer 函数来实现.*/ /*从上面的说明中可以看出:软件时钟是按照其到期时间相对于当前正在处理的软原创 2011-07-08 15:17:06 · 654 阅读 · 0 评论 -
以611_I2C为例 跟踪Platform架构驱动——驱动注册篇
//*************************************************// 下面是驱动的注册//*************************************************//static struct pla原创 2011-07-08 14:42:58 · 515 阅读 · 0 评论 -
LINUX内核内存屏障 (Documentation/memory-barriers.txt)
LINUX内核内存屏障 (2011-07-07 20:10) ================= LINUX内核内存屏障 =================By: David Howells Paul E. Mc转载 2014-09-04 17:07:52 · 2316 阅读 · 0 评论 -
linux基本部件----klist
前面我们说到过list_head,这是linux中通用的链表形式,双向循环链表,功能强大,实现简单优雅。可如果您认为list_head就是链表的极致,应该在linux链表界一统天下,那可就错了。据我所知,linux内核代码中至少还有两种链表能占有一席之地。一种就是hlist,一种就是本节要介绍的klist。虽然三者不同,但hlist和klist都可以看成是从list_head中发展出来的,用于特殊转载 2015-08-28 16:48:40 · 2038 阅读 · 0 评论 -
Linux Performance Tools
Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的、简单的小工具。系统性能专家 Brendan D. Gregg 在最近的 LinuxCon NA 2014 大会上更新了他那个有名的关于 Linux 性能方面的 talk (Linux Performance Tools) 和幻灯片。和 Brendan 去年的 talk 比较,今年增加了测试和优转载 2015-10-09 13:48:56 · 976 阅读 · 0 评论 -
DPDK support for vhost-user学习笔记
作者:张华 发表于:2015-08-06版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明( http://blog.csdn.net/quqi99 ) X86体系早期没有在硬件设计上对虚拟化提供支持,因此虚拟化完全通过软件实现。一个典型的做法是通过优先级压缩(Ring Compression)和二进制代码翻译(Binary Trans转载 2017-07-24 14:32:50 · 936 阅读 · 0 评论