
Linux
文章平均质量分 66
edison0716
这个作者很懒,什么都没留下…
展开
-
kernel 网桥代码分析
作者:林海枫 本文地址: http://blog.youkuaiyun.com/linyt/archive/2010/01/14/5191512.aspx 注:本文由作者所拥用,欢迎转载,但请全文转载并注明作者,请勿用于 任何商途。 本文分析的kernel版本为:2.6.24.4,网桥代码目录为:linux-2.6.24.4/net/bridge。 本文着重分析网桥的基本功能,关于STP的功能转载 2010-03-17 16:21:00 · 1370 阅读 · 0 评论 -
Linux网桥的实现分析
本文分析了linux 2.4.x内核的网桥的实现方法,并且描述了如何使用2.4中的网桥。网桥,类似于中继器,连接局域网中两个或者多个网段。它与中继器的不同之处就在于它能够解析它收发的数据,读取目标地址信息(MAC),并决定是否向所连接网络的其他网段转发数据包。为了能够决策向那个网段发送数据包,网桥学习接收到数据包的源MAC地址,在本地建立一个以MAC和端口为记录项的信息数据库。 Linux内核转载 2010-04-20 09:59:00 · 1298 阅读 · 0 评论 -
linux信号机制之sigaction结构体浅析
信号安装函数sigaction(int signum,const struct sigaction *act,struct sigaction *oldact)的第二个参数是一个指向sigaction结构的指针(结构体名称与函数名一样,千万别弄混淆了)。在结构sigaction的实例中,指定了对特定信号的处理,信号所传递的信息,信号处理函数执行过程中应屏蔽掉哪些函数等。当然,此指针也可以为NUL转载 2010-03-30 10:47:00 · 673 阅读 · 0 评论 -
Linux的TUN/TAP编程
TUN/TAP虚拟网络设备为用户空间程序提供了网络数据包的发送和接收能力。他既可以当做点对点设备(TUN),也可以当做以太网设备(TAP)。实际上,不仅Linux支持TUN/TAP虚拟网络设备,其他UNIX也是支持的,他们之间只有少许差别。原理简介TUN/TAP虚拟网络设备的原理比较简单,他在Linux内核中添加了一个TUN/TAP虚拟网络设备的驱动程序和一个与之相关连的字符设备/dev/net/转载 2010-03-29 13:49:00 · 1192 阅读 · 0 评论 -
内核定时器(2.6.23)
一、定义:/include/linux/timer.h struct timer_list {struct list_head entry;unsigned long expires;void (*function)(unsigned long);unsigned long data;struct tvec_t_base_s *base;#ifd转载 2010-03-25 13:06:00 · 1909 阅读 · 0 评论 -
mmap driver
mmap will establish a mapping between kernel and userspace, We can use it to read data from kernel more quickly.mmap is a function pointer in driver, so we have to write a driver to realize it, a simp转载 2010-03-24 19:05:00 · 2795 阅读 · 0 评论 -
spinlock与linux内核调度的关系
关于自旋锁用法介绍的文章,已经有很多,但有些细节的地方点的还不够透。我这里就把我个人认为大家容易有疑问的地方拿出来讨论一下。 一、自旋锁(spinlock)简介 自旋锁在同一时刻只能被最多一个内核任务持有,所以一个时刻只有一个线程允许存在于临界区中。这点可以应用在多处理机器、或运行在单处理器上的抢占式内核中需要的锁定服务。二、信号量简介这里也介绍下信号量的概念,因为它的用法和自旋锁转载 2010-03-24 09:05:00 · 732 阅读 · 0 评论 -
__init的用法
在kernel中有很多__init,这个东东到底是何方神圣捏?且听小生我一一道来。下面是其定义:file:/include/linux/init.h 43 #define __init __attribute__ ((__section__ (".init.text"))) __cold 44 #define __initdata __attribute__ ((__section__转载 2010-03-23 20:10:00 · 617 阅读 · 0 评论 -
kthread usage
1 使用kthread_create创建线程: struct task_struct *kthread_create(int (*threadfn)(void *data), void *data,转载 2010-03-23 11:17:00 · 655 阅读 · 0 评论 -
字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。该散列表中的每一个元素是一个 char_device_struct 结构,它的定义如下: static struct char_device_struct { struct char_device_struct *next; // 指向散列冲突链表中的下一个元素的指针 unsigned转载 2010-03-19 09:26:00 · 541 阅读 · 0 评论 -
File_operations结构体
File_operations结构体 file_operation就是把系统调用和驱动程序关联起来的关键数据结构。这个结构的每一个成员都对应着一个系统调用。读取file_operation中相应的函数指针,接着把控制权转交给函数,从而完成了Linux设备驱动程序的工作。 在系统内部,I/O设备的存取操作通过特定的入口点来进行,而这组特定的入口点恰恰是由设备驱动程序提供的。转载 2010-03-18 21:02:00 · 625 阅读 · 0 评论 -
linux网桥设置MAC地址时的行为
brctl addbr br0ifconfig br0br0 MAC is 00:00:00:00:00:00brctl addif br0 eth1 (eth1 is xx:xx:xx:xx:xx:33)ifconfig br0br0 MAC is xx:xx:xx:xx:xx:33 same as eth1, auto changebrctl addif br0 eth2 (et转载 2010-04-20 13:29:00 · 4104 阅读 · 0 评论