
linux内核
scdxmoe
这个作者很懒,什么都没留下…
展开
-
图解TCP:socket bind listen syn ack 内核实现
1、socket2、bind3、listen4、syn5、ack转载 2015-09-24 13:02:07 · 691 阅读 · 0 评论 -
linux内核:systemtap内核调试 例子
Example IndexesAll ExamplesBy KeywordAll 124 Examples¶ general/alias_suffixes.stp - Count I/O Syscalls using Alias Suffixeskeywords: IO STATISTICS alias_suffixes.stp is a demonstrati转载 2014-08-29 10:15:27 · 2423 阅读 · 0 评论 -
linux :内核调试神器SystemTap — 简介与使用(一)
http://blog.youkuaiyun.com/zhangskd/article/details/25708441 a linux trace/probe tool.官网:https://sourceware.org/systemtap/ 简介 SystemTap是我目前所知的最强大的内核调试工具,有些家伙甚至说它无所不能:)转载 2014-08-29 09:28:49 · 2109 阅读 · 0 评论 -
TCP/IP驱动十一 ——内核2.6.26中inet_csk和inet_sk两个函数推导
http://fpcfjf.blog.163.com/blog/static/55469793201372033430691/ TCP/IP驱动十一 ——内核2.6.26中inet_csk和inet_sk两个函数推导在内核的sys_bind(sys_bind()---inet_bind()---inet_csk_get_port())过程中,在函数int inet_转载 2014-08-28 10:35:43 · 1315 阅读 · 0 评论 -
linux 内核编程之proc虚拟文件系统
http://blog.youkuaiyun.com/shallnet/article/details/17734619 【版权声明:转载请保留出处:blog.youkuaiyun.com/gentleliu。邮箱:shallnew*163.com】在 Linux 系统中,/proc 文件系统十分有用,它被用于内核向用户导出信息。/proc 文件系统是一个虚拟文件系统,通过它可以使用一种新转载 2014-09-07 20:12:08 · 784 阅读 · 0 评论 -
centos编译内核出现:no space left on device 解决方法
1、问题:原来将源码放在根目录下面编译过程中出现了 no space left on device利用df -h 命令查看 根目录空间占用完毕2、将源码改在其他空间很足的地方编译在make module_install 还是出现no space left on device但是该目录下面的空间很足,继续df -h 根目录满了3解决方法将根目录中的不用的文原创 2014-07-11 11:01:23 · 3711 阅读 · 1 评论 -
内核工具 – Sparse 简介,:__attribute, __context__
Sparse是内核代码静态分析工具, 能够帮助我们找出代码中的隐患. 主要内容:Sparse 介绍Sparse 使用方法Sparse 在编译内核中的使用补充 1. Sparse 介绍Sparse 诞生于 2004 年, 是由linux之父开发的, 目的就是提供一个静态检查代码的工具, 从而减少linux内核的隐患.其实在Sparse之前, 已转载 2014-07-10 11:17:31 · 1415 阅读 · 0 评论 -
linux 中 man 命令的介绍
linux 中 man 命令的介绍:man1是用户专用手册,man 2是系统调用,man 3是库函数查询等等Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。 Linux的man手册共有以下几个章节: 1、Standard commands (标准命令) 2、System calls (系统调用)原创 2014-05-26 20:33:31 · 865 阅读 · 0 评论 -
Linux系统调用之SYSCALL_DEFINE
相信熟悉系统调用的都知道,系统调用在内核中的入口都是sys_xxx,我也不例外,记得有一次,我抱着学习一下socket内核实现的心态想在内核中寻找sys_socket系统调用,却发现只能找到宏定义,怎么也找不到函数实现。后来经过查阅才知道,原来Linux的系统调用都改为SYSCALL_DEFINE定义的了。相信大家都很疑惑,原来的sys_xxx不是挺好的吗?为什么要定义成SYSCALL_DEFIN转载 2014-09-01 09:36:43 · 953 阅读 · 0 评论 -
linux kernel笔记——中断
http://blog.chinaunix.net/uid-27119491-id-3273595.html cpu与磁盘、网卡、键盘等外围设备(相对于cpu和内存而言)交互时,cpu下发I/O请求到这些设备后,相对cpu的处理能力而言,磁盘、网卡等设备需要较长时间完成请求处理。那么在请求发出到处理完成这段时间,应如何设定cpu的行为,既能让这期间运行的其他程序得到执行转载 2014-09-15 18:07:38 · 1023 阅读 · 0 评论 -
linux 笔记 关于struct file 结构下 private_data 数据结构的思考
http://blog.youkuaiyun.com/bush2582/article/details/7731220 struct file是字符设备驱动相关重要结构。struct file代表一个打开的文件描述符,它不是专门给驱动程序使用的,系统中每一个打开的文件在内核中都有一个关联的 struct file。 它由内核在 open时创建,并传递给在文件上操作的任何函数,知道最后关闭转载 2014-09-26 17:26:03 · 1965 阅读 · 0 评论 -
TCP socket 选项:TCP_NODELAY TCP_CORK
TCP_NODELAY在网络拥塞控制领域,我们知道有一个非常有名的算法叫做Nagle算法(Naglealgorithm),这是使用它的发明人JohnNagle的名字来命名的,JohnNagle在1984年首次用这个算法来尝试解决福特汽车公司的网络拥塞问题(RFC 896),该问题的具体描述是:如果我们的应用程序一次产生1个字节的数据,而这个1个字节数据又以网络数据包的形式发送到远端服务器,转载 2015-09-16 15:08:21 · 2746 阅读 · 0 评论 -
Linux原始套接字实现分析
http://blog.chinaunix.net/uid-27074062-id-3388166.html 本文从IPV4协议栈原始套接字的分类入手,详细介绍了链路层和网络层原始套接字的特点及其内核实现细节。并结合原始套接字的实际应用,说明各类型原始套接字的适应范围,以及在实际使用时需要注意的问题。一、原始套接字概述协议栈的原始套接字从实现上可以分为“链路层原始套接字”和“网转载 2015-06-24 14:46:54 · 654 阅读 · 0 评论 -
linux sysctl 参数实现 暨 ip_forward参数对Linux内核转发影响分析
ip_forward参数对Linux内核转发影响分析 2014-08-07 20:40:59分类: LINUX在进行Linux内核转发时,需要在proc文件系统的proc/sys目录设置转发的参数,可以使用下面的方法查看该参数的值 cat /proc/sys/net/ipv4/ip_forward,该参数的默认值为0,可以使用下面的方法进行修改该值,转载 2014-11-06 11:55:30 · 4086 阅读 · 0 评论 -
LINUX IP 路由实现
摘自:http://www.cnblogs.com/super-king/p/3296091.html 以下代码取自 kernel 2.6.24.[数据结构]该结构被基于路由表的classifier使用,用于跟踪与一个标签(tag)相关联的路由流量的统计信息,该统计信息中包含字节数和报文数两类信息。这个结构包含一个counters数组,每个处理器有256个元素。*大小为256是转载 2014-11-20 17:04:47 · 2683 阅读 · 0 评论 -
Linux 路由 学习笔记 之三 路由查找流程分析
http://blog.youkuaiyun.com/lickylin/article/details/38884841 上一节分析了路由的添加,本节接着分析路由的查找流程,路由查找流程也是被最多使用的接口。当设备三层协议栈接收到数据包、发送数据包等操作时,都要进行路由查找操作。 对于路由的查找,又分为两个查找过程,即不支持策略路由时的路由查找函数,以及支持策略路由时的路由查找转载 2014-11-20 17:02:18 · 1208 阅读 · 0 评论 -
linux 路由表 的一些相关资料
http://www.cnblogs.com/gunl/archive/2010/09/14/1826234.htmllinux 路由表 的一些相关资料===============================================================================linux 路由表维护查看 Linux 内核路转载 2014-11-20 15:17:19 · 762 阅读 · 0 评论 -
Linux内核中进程上下文和中断上下文的理解
摘自: http://blog.youkuaiyun.com/hustyangju/article/details/40180989 参考:http://www.embedu.org/Column/Column240.htmhttp://www.cnblogs.com/Anker/p/3269106.html首先明确一个概念:中断上下文和中断处理的上下半部是天差地别转载 2014-11-03 14:24:56 · 701 阅读 · 0 评论 -
linux-2.6内核模块引用计数的实现
http://www.embedu.org/Column/Column92.htm 一、模块使用计数的背景知识模块是一种可以在内核运行过程中动态加载、卸载的内核功能组件。2.6内核中模块的命名方式为*.ko。模块在被使用时,是不允许被卸载的。编程时需要用“使用计数”来描述模块是否在被使用。二、2.4内核使用计数的实现方法2.4内核中,模块自身通过 MOD_I转载 2014-10-15 16:33:46 · 756 阅读 · 0 评论 -
linux proc文件系统探索
« proc文件系统探索 之 proc根目录下的文件[七]proc文件系统探索 之 以数字命名的目录[二] »proc文件系统是linux内核设计中一个经典的部分,她允许用户动态的查看内核的运行情况,包括当前系统中所有进程运行的信息,系统硬件信息, 内存使用情况等。现在许多软件都是通过proc文件系统提取内核的信息,例如ps,我们也可以通过proc文件系统动态的修改内核的一转载 2014-05-26 17:10:08 · 665 阅读 · 0 评论 -
linux内核线程的创建与销毁
linux内核线程的创建与销毁 源地址:http://blog.chinaunix.net/uid-23947854-id-4200974.htmllinux将创建内核线程的工作交给了一个专门的内核线程kthreadd来完成,该线程会检查全局链表kthread_create_list,如果为NULL,就会调schedule()放弃cpu进入睡眠状态,否则就取下该链表中的一项创建转载 2014-04-09 14:30:56 · 1174 阅读 · 0 评论 -
关于 linux中TCP数据包(SKB)序列号的小笔记
关于 SKB序列号的小笔记为了修改TCP协议,现在遇到了要改动tcp分组的序列号,但是只是在tcp_sendmsg函数中找到了SKB的end_seq 一直没有找到seq 不清楚在那里初始化了,就跟踪了分配SKB的函数 sk_stream_alloc_skb()还是没有找到,最后在函数skb_entail中找到:static inline void skb_ent原创 2013-12-28 15:45:14 · 2507 阅读 · 0 评论 -
linux多线程编程相关知识
4.4.3 Mutex DeadlocksMutexes 提供了一种允许一个线程让另一个线程阻塞的机制。但是这也为产生一种新的错误带来了可能---死锁。当一个或则多个线程等待不可能发生的事件时就会产生死锁。当同一个线程对同一个mutex加锁两次时就可能发生死锁。这也跟锁的类型有关。有三种锁, 1> 当为fast mutex(默认的种类)类型的锁时,将会发生死锁。因为它将转载 2013-11-13 19:35:17 · 1081 阅读 · 0 评论 -
TCP的TIME_WAIT状态
主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度,MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时间,超过这个时间将在网络中消失。MSL在RFC 1122上建议是2分钟,而源自berkeley的TCP实现传统上使用30秒,因而,TIME_WAIT状态一般维持在1-4分钟。 TIME_WA转载 2013-11-12 14:18:50 · 738 阅读 · 0 评论 -
TCP/IP源码(59)——TCP中的三个接收队列
在Linux内核的TCP实现中,TCP有三个接收队列——除去错误队列。这三个队列分别是struck sock中的sk_receive_queue和sk_backlog,以及struct tcp_sock中的prequeue。这三个队列作用,网上已经有很多文章论述了。这里只简单介绍一下,sk_receive_queue是真正的接收队列,收到的TCP数据包经过检查和处理后,就会保存到这个队列中。s转载 2013-11-10 18:59:55 · 1605 阅读 · 0 评论 -
应该知道的Linux技巧
这篇文章来源于Quroa的一个问答《What are some time-saving tips that every Linux user should know?》—— Linux用户有哪些应该知道的提高效率的技巧。我觉得挺好的,总结得比较好,把其转过来,并加了一些自己的理解。 首先,我想告诉大家,在Unix/Linux下,最有效率技巧的不是操作图形界面,而是命令行操作,因为命令行意味着自转载 2013-10-10 16:21:45 · 710 阅读 · 0 评论 -
vmware workstation 8安Centos6.2出现问题
在vmware workstation 8安Centos6.2出现问题:this kernel requires an X86-64 CPU,but only detected an i686 CPU Unable to boot-please use a kernel appropriate for your CPU原创 2013-10-05 12:32:32 · 845 阅读 · 0 评论 -
实验环境rhel6.3,升级前内核版本2.6.32,升级后内核版本3.3.6.步骤如下: [复制链接]
给服务器升级内核,实验环境rhel6.3,升级前内核版本2.6.32,升级后内核版本3.3.6.步骤如下:1、下载内核源码,可在http://www.kernel.org/pub/linux/kernel/下载。本次我下载的是linux-3.3.6.tar.gz。2、将下载的内核代码拷贝至/usr/src下,cp linux-3.3.6.tar.gz /usr/src/。3、解压,ta原创 2013-10-04 19:35:44 · 2166 阅读 · 0 评论 -
Red Hat Enterprise Linux6.3 root用户登录
Red Hat Enterprise Linux6.3 root用户登录: sudo passwd输入密码 即可原创 2013-10-03 20:12:37 · 2180 阅读 · 0 评论 -
linux TCP数据包封装在SKB的过程分析
在linux中 tcp的数据包的封装是在函数tcp_sendmsg开始的,在函数tcp_sendmsg中用到skb = sk_stream_alloc_skb(sk, select_size(sk, sg),sk->sk_allocation);分配了一个SKB(暂且称之为old_skb)而真正的发送的SKB并不是old_skb,而是在函数tcp_transmit_skb中新分配了一个skb(原创 2013-12-30 12:56:34 · 3251 阅读 · 0 评论 -
linux TCP头部的构造的简单分析
TCP的头部的构造是在函数tcp_transmit_skb()中进行的函数片段如下: /* Build TCP header and checksum it. */ th = tcp_hdr(skb); th->source = inet->inet_sport; th->dest = inet->inet_dport; th->seq = htonl(tcb->seq);原创 2013-12-30 19:44:14 · 2433 阅读 · 0 评论 -
linux内核中 校验相关的一些结构
首先来看校验相关的一些结构: 1 net_device结构: 包含一个features的域,这个表示设备的一些特性(比如控制校验),下面的几个flag就是用来控制校验: Java代码 #define NETIF_F_IP_CSUM 2 /* Can checksum TCP/UDP over IPv4. */ #define NE转载 2013-12-17 16:43:04 · 1049 阅读 · 0 评论 -
ubutun12.04 ftp 的快速配置
¢1 sudo apt-get installvsftpd¢2 更该权限这里只做一些必要的配置:local_enable=YES write_enable=YES ¢3 sudouseradd -mmou(在当前的目录下面)¢sudopasswdmou¢4 sudo servicevsftpd start原创 2013-09-18 19:41:20 · 1234 阅读 · 0 评论 -
linux:关于Linux系统中 CPU Memory IO Network的性能监测
我们知道:系统优化是一项复杂、繁琐、长期的工作.通常监测的子系统有以下这些:CPUMemoryIONetwork下面是常用的监测工具Linux 系统包括很多子系统(包括刚刚介绍的CPU,Memory,IO,Network,等),下面这张图片很好的总结了 Linux 各个子系统以及监控这些子系统所需要的工具,上面原创 2014-01-20 19:45:22 · 1893 阅读 · 0 评论 -
ubutun12.0.4编译低版本的内核linux-3.1.4 的步骤
下面是我在ubutun12.0.4环境中编译低版本linux-3.1.4的步骤,我用history截取了完整的步骤: 1 2 cd linux-3.1.4 13 make mrproper 14 sudo spt-get update 15 sudo apt-get update 16 spt-get install libncurses5-dev原创 2013-12-23 18:05:52 · 1649 阅读 · 0 评论 -
linux内核源码的下载 ------ 各种版本的 v1.x v2.x v3.x
1、下载最新b版本的在:https://www.kernel.org/2、历史的v1.x v2.x v3.x在下面网站下载:https://www.kernel.org/pub/linux/kernel/部分内容如下:v1.0/ 20-Mar-2003 22:58 - v1.1/ 20-原创 2013-12-23 17:54:05 · 6608 阅读 · 1 评论 -
linux TCP发送源码学习(2)--tcp_write_xmit
一、tcp_write_xmit()将发送队列上的SBK发送出去,返回值为0表示发送成功。函数执行过程如下:1、检测拥塞窗口的大小。2、检测当前报文是否完全处在发送窗口内。3、检测报文是否使用nagle算法进行发送。4、通过以上检测后将该SKB发送出去。5、循环检测发送队列上所有未发送的SKB。static int tcp_write_xmit(struct转载 2014-01-02 20:20:36 · 2258 阅读 · 0 评论 -
linux TCP发送源码学习(3)--tcp_transmit_skb
1static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, gfp_t gfp_mask){ const struct inet_connection_sock *icsk = inet_csk(sk); struct转载 2014-01-02 20:18:14 · 2879 阅读 · 0 评论 -
linux TCP发送源码学习(1)--tcp_sendmsg
http://sunjiangang.blog.chinaunix.net/uid-9543173-id-3546189.html一、tcp_sendmsg()函数分析:int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, size_t size){转载 2014-01-02 20:22:15 · 3965 阅读 · 0 评论 -
套接字基础
套接字基础一、套接字与套接字接口套接字是应用程序访问系统网络服务的接口。端到端的通信通过一对套接字来实现,一个套接字对应一个通信端点。从实现来看,套接字是端端通信的抽象描述。在应用程序里,套接字对应一个整数值(套接字描述符);在内核里,套接字对应一个管理通信过程的对象(struct socket结构)。该结构与前面所说的整数值一一对应。在Linux系统内核中,struc转载 2013-10-03 20:21:01 · 772 阅读 · 0 评论