内核
yxnyxnyxnyxnyxn
男
展开
-
sk_buff
http://www.cnblogs.com/iceocean/articles/1594160.htmlhttp://simohayha.iteye.com/blog/556168转载 2013-03-06 08:59:24 · 667 阅读 · 0 评论 -
Linux中的spinlock和mutex
(一)spinlock:自旋锁自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分(对于单处理器来说,防止中断处理中的并发可简单采用关闭中断的方式,不需要自旋锁)。自旋锁最多只能被一个内核任务持有,如果一个内核任务试图请求一个已被争用(已经被持有)的自旋锁,那么这个任务就会一直进行忙循环——旋转——等待锁重新可用。要是锁未被争用,请求它的内核任务便转载 2013-04-22 13:24:56 · 1390 阅读 · 1 评论 -
kernel socket 实例
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include转载 2013-04-22 13:47:23 · 1052 阅读 · 0 评论 -
网络协议栈(1)从tcp的connect开始
一、基本结构内核中网络模块有眼花缭乱的数据结构,而且从名字和功能上看还没啥差别,所以对代码的理解还是有不小影响的。这里就是一个网络的开始阶段,然后尝试以这个为入口,看看系统中的网络的相关模块和功能实现。1、socket 根据 毛德操 《linux情景分析》下册863页有一个比较合理的解释:“socket和sock是同一个事物的两个方面。不妨说,socket结构是面向进程和转载 2013-03-27 17:18:03 · 946 阅读 · 0 评论 -
kernel socket 实例
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include转载 2013-03-27 16:49:41 · 1321 阅读 · 1 评论 -
内核程序,makefile分析(转自CSDN)
内核模块----linux内核的整体结构庞大,其中包含的组件也很多,如何使用需要的组件?1--把所有的组件都编译进内核文件,即zImage,bzImage,但这样会导致两个问题:一是生产的内核文件过大,二是,如果要添加或删除某个组件要重新编译整个内核。内核模块机制---提供一种机制能让内核文件(zImage,bzImage)本身并不包含某组件,而是在该组件需要被使用的时候,动态的添加到转载 2013-03-18 15:50:20 · 850 阅读 · 1 评论 -
添加linux内核驱动
1.将内核驱动.ko放入/lib/modules/3.2.0-23-generic/kernel/drivers$ 目录下2.执行depmod -a来解决依赖(扫描driver下的驱动依赖关系),命令执行完成后,会自动生成modules.dep 和modules.alias。dep为依赖关系。3.更新当前kernel的initramfs(ram file system 取代了ram dis原创 2013-03-18 16:08:14 · 923 阅读 · 1 评论 -
linux协议栈skb操作函数
转自http://linux.chinaitlab.com/administer/842245.htmlstatic inline unsigned char *skb_pull_inline(struct sk_buff *skb , unsigned int len){ return unlikely(len > skb->len ) ? NULL : _转载 2013-03-11 14:46:24 · 2765 阅读 · 2 评论 -
CONFIG_NR_CPUS num_online_cpus
#define NR_CPUS CONFIG_NR_CPUSCONFIG_NR_CPUS是内核被配置支持的CPU个数,而实际设备的CPU个数是在系统启动过程当中去动态监测的。也就是说你配置系统支持32个CPU那么CONFIG_NR_CPUS就等于32,而num_online_cpus()则是当前设备激活可调度的CPU个数。如果我们配多少系统就认为有多少个CPU那转载 2013-03-11 09:31:13 · 6898 阅读 · 0 评论 -
sk_buff结构 及操作函数 pull等,讲解较准确
7.1. sk_buff结构在Linux内核的网络实现中,使用了一个缓存结构(struct sk_buff)来管理网络报文,这个缓存区也叫套接字缓存。sk_buff是内核网络子系统中最重要的一种数据结构,它贯穿网络报文收发的整个周期。该结构在内核源码的include/linux/skbuff.h文件中定义。我们有必要了解结构中每个字段的意义。一个套接字缓存由两部份组成:·转载 2013-03-11 15:19:46 · 1503 阅读 · 0 评论 -
linux内核学习笔记之——list_for_each_entry
http://bbs.chinaunix.net/thread-1981115-1-1.htmlhttp://blog.chinaunix.net/uid-14114479-id-2932024.html转载 2013-03-11 11:38:28 · 774 阅读 · 0 评论 -
skb_put(skb,len)和skb_push(skb,len)的区别
skb_put() 增长数据区的长度来为memcpy准备空间. 许多的网络操作需要加入一些桢头, 这可以使用skb_push来将数据区向后推, 为头留出空间. 请参见下图: ---------------------------------------- | head | data | | ----------------------------------------转载 2013-03-11 14:31:47 · 10718 阅读 · 0 评论 -
linux内核wait_queue深入分析
转自http://www.cnblogs.com/xmphoenix/archive/2011/11/20/2256419.htmlhttp://www.cnblogs.com/xmphoenix/archive/2011/11/20/2256417.htmlhttp://www.cnblogs.com/xmphoenix/archive/2011/11/20/2256422.html转载 2013-03-11 09:10:31 · 810 阅读 · 0 评论 -
warning: the frame size of 1456 bytes is larger than 1024 bytes
内核编程会出现标题warning,是由于局部变量大于1024 bytes 引起的参照点击打开链接12 down vote accepted I'm guessing there's some large buffer in that routine that is stack-allocated; this is likely causi原创 2013-04-15 11:16:01 · 5521 阅读 · 0 评论