乐于学习与分析
sys_listen对面向连接的协议,在调用 bind(2)后,进一步调用 listen(2),让套接字进入监听状态: int listen(int sockfd, int backlog);backlog 表示新建连接请求时,最大的未处理的积压请求数。
当创建了一个Socket 套接字后,对于服务器来说,接下来的工作,就是调用 bind(2)为服务器指明本地址、协议端口号,常常可以看到这样的代码:strut sockaddr_in sin; sin.
原文:http://blog.csdn.net/yeyuangen/article/details/6799575 一、问题的引入——socket的引入是为了解决不同计算机间进程间通信的问题 1.socket与进程的关系 1).socket与进程间的关系:socket 用来让一个进程和其他的进程互通信息(IPC),而Socket接口是TCP/IP网络的API接口函数。
前面了解过 sk 有一个接收队列,用于存储接 收到的 skb,对于 socket 层面上来讲,数据接收,就是要把数据从这个队列中取出来,交给上层用户态。这里涉及到出队操作,但是,要了解如何出队,就 得了解传输层协议如何入队。
http://tech.chinaunix.net/a2010/1231/1145/000001145393.shtml
上次看了ubuntuer兄写的教你修改以及重构skb,受益匪浅,真是经典之作。但ubuntuer兄的代码是基于2.6.18的,比较旧。今天经过摸索,我终于让其可以在2.
TCP状态转换图 注:主动、被动 与 服务器、客户端没有明确的对应关系。 这个图N多人都知道,它排除和定位网络或系统故障时大有帮助,但是怎样牢牢地将这张图刻在脑中呢?那么你就一定要对这张图的每一个状态,及转换的过程有深刻的认识,不能只停留在一知半解之中。
1. 前言打开一个网络socket后可以使用set/getsockopt(2)可实现用户空间与内核的通信,本质和ioctl差不多,区别在于set /getsockopt不用新建设备,直接利用系统已有的socket类型就可以进行,可用setsockopt函数向内核写数据,用 getsockopt向内核读数据。
我在学习《Linux设备驱动程序(第3版)》的 第九章 与硬件通信 时,对 I\O总线的概念 不是很清晰,所以查找了有关资料。现在总结如下: 本文的参考资料:1、 《AMBA、AHB、APB总线简介》 作者 adamzhao 日期 2006-11-16 19:33:00转载网址:http://www.
一. 在c中分为这几个存储区1.代码区- 存放程序的执行代码(机器指令) 2.栈区- 由编译器自动分配释放3.堆区 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收4.全局区(静态区)和常量区,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。
Linux网络核心数据结构是套接字缓存(socket buffer),简称skb。它代表一个要发送或处理的报文,并贯穿于整个协议栈。1、 套接字缓存skb由两部分组成:(1) 报文数据:它保存了实际在网络中传输的数据;(2) 管理数据:供内核处理报文的额外数据,这些数据构成了协议之间交换的控制信息。
我们用术语慢系统调用(slow system call)描述accept函数,该术语也适用于那些可能永远阻塞的系统调用。永远阻塞的系统调用有可能永远无法返回,多数网络支持函数都属于这一类。
Linux 系统中有大量的工具可用于 ELF 文件的二进制调试,常用的工具在 GNU binutils 包中可以找到,注意你可能需要这些工具的 x86 版本和 arm 版本,以便在调试环境中能够调试 x86 ELF 文件和 arm ELF 文件——与交叉编译器 arm-linux-gcc 类似,我们需要所谓的“交叉调试工具”,你可以通过互联网下载别人已经编译好的 crosstool ,或者自己重新编译( configure 时指 --target=arm-linux )。
select系统调用及驱动实现方法 一.系统提供select函数来实现多路复用输入/输出模型。原型: #include linux/poll.h>int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct timeval *timeout); 参数maxfd是需要监视的最大的文件描述符值+1;rdset,wrset,exset分别对应于需要检测的可读文件描述符的集合,可写文件描述符的集 合及异常文件描述符的集合。
1 Union-Find(并查集):它借用树结构来处理集合的合并操作和查询操作 2 KMP 3 BFPRT 4 Quicksort 5 Floyd-Warshall algorithm:...
BFPRT算法的作者是5位真正的大牛(Blum 、 Floyd 、 Pratt 、 Rivest 、 Tarjan),该算法入选了在StackExchange上进行的当今世界十大经典算法,而算法的简单和巧妙颇有我们需要借鉴学习之处。
工作几年来,一直从事Linux内核驱动方面的开发。从接触Linux到现在,读过不少Linux方面的书籍,现把认为很不错的一部分列出来和大家分享一下。
在软件开发中任务经常由于某种条件没有得到满足而不得不进入睡眠状态,然后等待条件得到满足的时候再继续运行,进入运行状态。这种需求需要等待队列机制的支持。Linux中提供了等待队列的机制,该机制在内核中应用很广泛。
/* capture_packet.c - 截获所有以太网帧数据并进行具体分析 */ /* 常用函数的头文件 */#include #include #include #include #include #include /* 与网络相关的头文件 */#includ...
linux UART串口驱动开发文档 3人收藏此文章, 收藏此文章 发表于2年前 , 已有2038次阅读 共0个评论 3人收藏此文章 内容简介: 介绍了Linux下的串口驱动的设计层次及接口, 并指出串口与TTY终端之间的关联层次(串口可作TTY终端使用), 以...
1.引言 随着3C融合时代的到来,越来越多的消费类电子产品中有浏览器应用的需求,目前,数字电视机顶盒、IPTV机顶盒、数字电视一体机和手机等等产品中很多都已支持浏览器应用。 由于消费类电子产品本身的CPU处理能力低、内存容量受限。
Linux音频编程指南 (2010-01-07 13:41)转载 分类: 音频专题 文章来源http://hi.baidu.com/%D3%C0%BA%E3%B5%E3/blog/item/7c8e18b7f02d87fe31add1c2.html 虽然目前Linux的优势主要体现在网络服务方面,但事实上同样也有着非常丰富的媒体功能,本文就是以多媒体应用中最基本的声音为对象,介绍如何在Linux平台下开发实际的音频应用程序,同时还给出了一些常用的音频编程框架。
3. sys_reboot29298:内核中其他地方可能都没有sys_reboot的实现方法先进。其原因可以理解为:根据调用的名字我们就可以知道,reboot系统调用可以用来重新启动机器。
身份证号码的规则1、15位身份证号码组成:ddddddyymmddxxs共15位,其中:dddddd为6位的地方代码,根据这6位可以获得该身份证号所在地。yy为2位的年份代码,是身份证持有人的出身年份。
大家都知道,这个epoll_ctl系统调用是epoll高效之所在,因为把文件描述符集合的传递与轮询分离,而对目标文件描述符集合的操作就在这个epoll_ctl里面完成。我们先来关注一下数据结构: 第一个是昨天提到的eventpoll,这里就不说了。
昨晚分析了poll,通过代码的阅读可以发现,poll操作有很多可以优化的地方。epoll是eventpoll的简称,他的效率是非常高的,我们今天来看看他的实现。他的实现在FS/Eventpoll.c,代码有1500多行,呵呵,怕了吧。
这是自己第一次写Linux源码的分析,看的多了,写还是第一次,呵呵。 废话不多说,相信看这篇文章的都用过poll和epoll,先来看poll系统调用的源码。 asmlinkage long sys_poll(struct pollfd __user ...
Android 的boot.img 包括 boot header,kernel, ramdisk 首先来看看Makefile是如何产生我们的boot.img的: boot镜像不是普通意义上的文件系统,而是一种特殊的Android定制格式,由boot header,压缩的内核,ramdisk以及second stage loader(可选)组成,可以从mkbootimg.h文件中看到。
大致来说分为两种(也许还有许多,等见到了再总结吧): 第一种:fileoparetion里的ioctl: 第二种:属性操作中对文件进行读写 这种是重要的,也是常见的:如: static ssize_t isa1200_mode_show(struct de...
中断还是中断,我讲了很多次的中断了,今天还是要讲中断,为啥呢?因为在操作系统中,中断是必须要讲的.. 那么什么叫中断呢, 中断还是打断,这样一说你就不明白了。唉,中断还真是有点像打断。
I帧:帧内编码帧 I帧(I frame) 又称为内部画面 (intra picture),I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。
#include ; #include ; main () { pid_t pid; pid=fork(); if (pid printf("error in fork!"); ...
from: http://blog.csdn.net/juana1/article/details/6648518 现在Android已经很火了,我的一个哥们儿上个月找到一个Android应用开发的职位,月薪就有6K了,羡慕啊。
一、 链表数据结构简介 链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链 表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。
Abstract: Digital potentiometers (pots) offer advantages for audio volume (gain) control applic...
原文地址:http://www.cnblogs.com/liloke/archive/2011/11/20/2255737.html Linux Cache 机制 在阅读文章前,您应该具备基本的存储器层次结构知识,至少要了解局部性原理。
//STL 内存管理器的C实现 #include stdio.h> #include stdlib.h> #define __ALIGN 8 //小型区块上调边界 #define __MAX_BYTES 128 //小型区块大小的上限 ...
原文地址:http://blog.csdn.net/haoel/article/details/1948051/另附c++对象内存布局文章地址:http://blog.csdn.net/haoel/article/details/3081328/ 前言 C++中的虚函数的作用主要是实现了多态的机制。
原文:http://www.cnblogs.com/sharra/archive/2010/12/30/1921287.html 因为需要了解底层设备访问的原理,所以惯用高层应用语言的我,需要了解一下Linux的设备访问机制,尤其是处理一组非阻塞IO的原理方法,标准的术语好像是叫多路复用。
#include#include/** 返回指针的函数和指向函数的指针*//** 定义一个函数,返回一个void指针,在C语言中,void指针可以* 指向任何类型*/void *func(){ /* * 一种很容易犯的错误,将局部变量的地址返回 */ int m; printf("define as void *func()\n"); return &m;}/** 声明一个指向函数的指针,指向返回类型为void指针的函数*/void *(*pfunc)();/*void (*pfun)();* 声明一个函数,指向一个返回void的函数。
内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能。
作者:gfree.wind@gmail.com 博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。
实时操作系统µC/OS II下TCP/IP协议栈的实现 摘要: 结合ez80和ARM7两种系统上的具体实现,说明了如何在嵌入式实时操作系统µC/OSII上移植实现LwIP这套TCP/IP协议栈,使µC/OS II成为支持网络的RTOS。
课程1: Computer Science http://www.cs101-class.org/ 课程2: Machine Learning : 机器学习http://jan2012.
micro_httpd是一个轻量级的http服务器 (http://www.acme.com/software/micro_httpd/),micro_httpd从xinetd运行,性能较差,但对于负载较小的网站,micro_httpd是能胜任的,其实现了http服务器的一些基本特征功能: 1. .
有限状态机是文本处理的利器,关于有限状态机的理论比较复杂,但在实际文本处理应用中, 只需要对有限状态机的模型有所了解,搞清楚状态转移关系即可快速的写出程序。 如对网络配置文件进行解析(与/etc/sysconfig/network-scripts/ifcfg-eth0文件...
http://www.ieinspector.com/httpanalyzer/
一. 引言: 对于PC机,其开机后的初始化处理器配置、硬件初始化等操作是由BIOS(Basic Input /Output System)完成的,但对于嵌入式系统来说,出于经济性、价格方面的考虑一般不配置BIOS,因此我们必须自行编写完成这些工作的程序,这就是所需要的开机程序。
μc/GUI学习笔记之三文本显示与数值显示 3.1 文本显示 3.1.1 显示支持控制字符 文本显示支持的ASCII字符如图3.1。
安装双系统的朋友经常有这样的现象发生:xp系统崩溃了需要重新安装或者一键GHOST以后,系统引导菜单“坏掉了”,原来的windows双系统只剩下XP了,如果没有合适的处理方法,甚至要重装系...