- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 linux网卡驱动分析之probe函数
probe函数中一般完成一下任务:1、通知内核设备执行DMA的寻址能力,说明设备支持64位还是32位的DMA地址。如果不支持64位的地址,则尝试32位的:err = dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(64)); if (!err) { err = dma_set_coherent_mask(pci_dev_to
2013-03-16 10:11:54
6285
原创 linux网卡驱动分析之驱动加载
本文以Intel e1000e网卡驱动为例,分析网卡驱动的基本流程,内核版本为2.6.18。一、驱动注册网卡是一种PCI设备,为了正确的注册到内核,所有的PCI设备驱动都必须创建一个主要的结构体struct pci_driver:struct pci_driver { struct list_head node; char *name; const struc
2013-03-09 13:17:03
3638
原创 linux内核之软中断和tasklet
一、引言 当CPU收到一个中断时,会调用驱动程序中注册的中断处理程序,中断处理程序一般要先关闭中断,因为中断处理程序一般是不可重入的,此时CPU不会收到其他中断,无论是同类的中断还是其他类型中断,CPU也不能执行其他进程,意味着此时的CPU被中断处理程序独占了。 一般的中断处理过程如下: 1、硬件设备向CPU产生中断,并通知内核;
2013-02-26 17:37:34
1470
1
原创 awk提取一串字符中的数字
用awk命令提取一串字符中的数字:[root@jackyhost root]# echo b1c2d3d1e8f9 | awk '{ string=$0 len=length(string) for(i=0; i<=len; i++) { tmp=substr(string,i,1) if(tmp ~ /[1-
2013-02-20 21:18:42
11787
3
转载 C语言字节对齐
文章最后本人做了一幅图,一看就明白了,这个问题网上讲的不少,但是都没有把问题说透。 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数
2012-08-19 10:47:18
849
转载 linux内核源码中常见宏定义
1. gcc的__attribute__编绎属性要了解Linux Kernel代码的分段信息,需要了解一下gcc的__attribute__的编绎属性,__attribute__主要用于改变所声明或定义的函数或数据的特性,它有很多子项,用于改变作用对象的特性。比如对函数,noline将禁止进行内联扩展、noreturn表示没有返回值、pure表明函数除返回值外,不会通过其它(如全局变量、指针)
2012-04-19 15:40:55
924
原创 VirtualBox安装Centos,配置网络(主机可以通过SSH连接虚拟机系统,同时虚拟机系统可以访问外网)
环境:主机:Windows 7-64bit主机联网方式:宽带拨号连接虚拟机:Oracle VM VirtualBox 4.1.8虚拟机系统:Centos 6.2 我的目标很简单,既要再Windows 7中能通过SSH连接到Centos,同时在Centos中也能访问外网。折腾了好久,网络上也有很多方法,但是都不可用。 Virtual Box中有几种网
2012-04-07 16:24:44
9695
1
转载 理解inode
理解inode作者: 阮一峰日期: 2011年12月 4日inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念,从而大大简化用户接口。下面就是我的inode学习笔记,尽量保持简单。=
2012-03-28 11:45:02
561
原创 linux c函数调用机制
Linux是Unix家族的一员,尽管Linux的历史不长,但与其相关的很多事情都发源于Unix。就Linux所使用的386汇编语言而言,它也是起源于Unix。Unix最初是为PDP-11开发的,曾先后被移植到VAX及68000系列的处理器上,这些处理器上的汇编语言都采用的是AT&T的指令格式。当Unix被移植到i386时,自然也就采用了AT&T的汇编语言格式,而不是Intel的格式(转自http:
2012-03-25 14:10:20
2547
原创 centos系统网口聚合(bonding)的配置
最近在研究网口聚合,系统是centos5.5(内核是2.6.18),先根据配置好聚合口,再用iometer工具通过配置好的聚合口对磁盘进行打流量,看最终的效果如何? 配置网口聚合的时候,我选择了两种模式:balance-rr和active-backup。balance-rr模式采用的是轮转算法(round-robin),即数据包会按顺序从第一个可用的绑定网口(即该聚合口的slave)
2012-02-09 19:01:40
13377
转载 fork两次如何避免僵尸进程
曾经觉得费解,温故知新一下:/*g++ -o New0001 New0001.cpp */#include #include #include #include int main(void){ pid_t pid; if ((pid = fork()) { fprintf(stderr,"Fork error!/n");
2012-02-08 16:56:01
670
原创 firefox同步书签的插件xmarks
今天发现firefox浏览器中一个非常好用的插件Xmarks,可以同步firefox浏览器的浏览历史和书签到Xmarks的服务器,这样我们在其他机器上使用firefox浏览器时,就可以同步浏览历史和标签到当前的机器上了,再也不用担心一些有价值的网页丢失了。当然你得有 firefox和Xmarks的账户,可以登陆http://www.xmarks.com/注册一个账号。 搜索附
2012-02-05 11:36:10
951
转载 在linux中的likely和unlikely
在linux中判断语句经常会看到likely和unlikely,例如:if(likely(value)){}else{}简单从表面上看if(likely(value)) == if(value),if(unlikely(value)) == if(value)。这两个宏对程序运行结果没有影响,只是用于提高程序效率。其实现和gcc编译器密切相关。具体点说,就是如果你觉
2011-12-26 17:31:53
456
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人