- 博客(129)
- 资源 (3)
- 收藏
- 关注
翻译 ERRNO错误代码
ERRNO错误代码 #ifndef _ASM_GENERIC_ERRNO_H#define _ASM_GENERIC_ERRNO_H#define EPERM 1 #define ENOENT 2
2011-09-02 09:46:57
1337
转载 raw socket编程例子
转自:http://bbs.chinaunix.net/viewthread.php?tid=876233&extra=page%3D3前几天看了看>第一卷,为了加深理解,便写了几个简单的程序,最近好忙,但是又怕忘记前面所学的知识,就粗糙的整理了一下,贴出来,希望能给初学者以
2011-09-01 18:47:33
2500
转载 网络数据包收发流程(四):协议栈之packet_type
进入函数netif_receive_skb()后,skb正式开始协议栈之旅。先上图,协议栈大致过程如下所示:跟OSI七层模型不同,linux根据包结构对网络进行分层。比如,arp头和ip头都是紧跟在以太网头后面的,所以在linux协议栈中arp和ip地位相同(如上
2011-09-01 10:38:35
10112
转载 网络数据包收发流程(三):e1000网卡和DMA
一、硬件布局每个网卡(MAC)都有自己的专用DMA Engine,如上图的 TSEC 和 e1000 网卡intel82546。上图中的红色线就是以太网数据流,DMA与DDR打交道需要其他模块的协助,如TSEC,PCI controller以太网数据在 TSECD
2011-09-01 10:37:19
8438
转载 网络数据包收发流程(二):不配置NAPI的情况
上一篇讲的是内核配置成NAPI的情况,那也是绝大多数内核使用的配置现在讲讲内核不配置成NAPI时的情况一、no NAPI 数据结构不配置NAPI的时候,网络设备不使用自己的napi_struct结构,所有网络设备驱动都使用同一个napi_struct,即c
2011-09-01 10:34:37
3735
转载 网络数据包收发流程(一):从驱动到协议栈
网络数据包收发流程(一):从驱动到协议栈早就想整理网络数据包收发流程了,一直太懒没动笔。今天下决心写了一、硬件环境intel82546:PHY与MAC集成在一起的PCI网卡芯片,很强大bcm5461: PHY芯片,与之对应的MAC是TSEC
2011-09-01 10:32:46
7178
转载 linux多进程和多线程分析之二
很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。今天终于下了决心,写点东西,以后可以再修修补补也无妨。一.为何需要多进程(或者多线程),为何需要并发?这个问题或许本身都不是个问题。但是对于没有接触过
2011-08-30 10:44:53
3605
转载 linux多进程和多线程分析之一
多线程 or 多进程?中级 | 2010-08-16 16:38 | 分类:①Unix/Linux、服务器技术 ②评比 | 2,638 次阅读作者:diaoyf | 文章来源:http://programmerdigest.cn在U
2011-08-30 10:44:10
5340
转载 linux sock_raw原始套接字编程
sock_raw原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICM
2011-08-26 18:05:15
854
转载 Linux网络编程一步一步学+基础
http://blogold.chinaunix.net/u1/48325/showart.php?id=413841·Linux网络编程基础(一)·Linux网络编程基础(二)·Linux网络编
2011-08-26 17:59:01
1414
转载 socket编程——TCP/UDP数据传输
socket()——生成socket句柄#include ; #include ; int socket(int domain, int type, int protocol); domain : "AF_INET"type : SOCK_ST
2011-08-26 17:42:14
1822
原创 char型数组转换到int型数组
对于单一的字节(a byte),大部分处理器以相同的顺序处理位元(bit),因此单字节的存放方法和传输方式一般相同。对于多字节数据,如整数(32位机中一般占4字节),在不同的处理器的存放方式主要有两种,以内存中0x0A0B0C0D的存放方式为例从外部读取字符串后,
2011-08-23 15:44:03
5525
转载 字节序(wiki)
字节序维基百科,自由的百科全书跳转到: 字节序,又称端序,尾序,英文:Endianness。在计算机科学领域中,字节序是指存放多字节数据的字节(byte)的顺序,典型的情况是整数在内存中的存放方式和网络传输的传输顺序。Endianness有时候也可以用指位序
2011-08-23 14:52:00
859
原创 linux 实现简单定时器的功能
对于程序中需要定时去check某些变量或者function返回结果的功能,最早就是用最简单的sleep()的一行语句,虽然可以实现,但是需要主程序一直等待一段时间,无论是否提前有返回值。后面就想到可以用time()来实现相同的功能,和sleep不同的地方就是,如果check到
2011-08-19 18:08:42
1136
转载 驱动开发的一些错误解决方法
驱动开发的一些错误解决方法In file included from /linux-2.6.32/arch/arm/include/asm/timex.h:15,from include/linux/timex.h:
2011-08-19 16:04:19
7204
原创 “asm/semaphore.h: No such file or directory”
今天编译发现一个error: “asm/semaphore.h: No such file or directory” ,发现2.6.19和2.6.31对这个信号量声明并不相同[patch] include linux/semaphore.h for kernel 2.6
2011-08-19 16:02:34
8226
转载 IEEE 802.11 Frame Types
IEEE 802.11 Frame Types IEEE 802.11 in the OSI Reference ModelThe IEEE 802.11 architecture resides in the Data Link Media Ac
2011-08-17 17:29:37
4209
转载 TCP/IP 通訊協定及網路架構研析
一、TCP/IP 整體架構概述二、利用 TCP/IP 傳送訊息 TCP 資料頭格式 IP 資料頭格式 Ethernet 資料頭格式三、IP 網路架構概述 IP 功能概述 IP 的定址方式 次級網路(Subnet)
2011-08-17 16:32:02
1138
转载 jiffies溢出与时间先后比较 + linux的HZ, Tick, Jiffies
Linux核心几个重要跟时间有关的名词或变数,底下将介绍HZ、tick与jiffies。(1)HZLinux核心每隔固定周期会发出timer interrupt (IRQ 0),HZ是用来定义每一秒有几次timer interrupts。举例来说,HZ为1000,代表每秒
2011-08-16 10:16:22
2790
翻译 全局变量、静态全局变量、静态局部变量、局部变量
全局和静态变量都在堆里。(这句话应该错了,应该是放在常量数据段)全局变量的作用范围是整个程序(如果程序是多个文件,必须在其他的文件中说明)。静态变量的作用范围要看静态变量的位置,如果在函数里,则作用范围 就是这个函数。静态全局变量,只在本文件可以用,虽然整
2011-08-03 19:30:49
675
转载 谈EXPORT_SYMBOL使用
EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的。2.6就必须用EXPORT_SYMBOL() 来导出来(因为2.6默认不到处所有的符号)。 1、EXP
2011-07-21 19:42:15
645
转载 Linux设备驱动学习笔记
这次的主要内容:1.linux设备驱动程序的作用2.内核模块和用户空间程序的区别3.Hello world程序. 4.Makefile文件5.编译,加载内核模块6.Other tips7.好书和网站1.linux设备驱动程序的作用简单的说,驱动程序告诉了我们可以提供了那些能力,但
2011-07-20 16:59:13
761
转载 kbuild系统-编译到内核和编译成模块的区别
代码编译到内核和编译成模块在代码中有什么区别呢? 从模块的代码中看是一样的。入口函数都是MODULE_init(fun),但是代码中的条件编译会使宏module_init()在编译到内核和编译成模块的情况下替换成不同的代码。 include/linux/init.h中可知
2011-07-20 16:37:16
621
转载 linux udev详解
udev简介: 早期的linux的/dev目录下有一大堆设备文件,不管你的主机上是否有这些设备,相当于提供一个标准接口,比 如 /dev/sda 一般表示 SISC 盘第一块磁盘,但你主机上即使没有这种磁盘,/dev/sda还是存在。 于是,这就有个问题:/dev/下会有很多实际
2011-07-12 18:53:05
1004
原创 linux udev 自动创建node
我们知道,生成设备文件节点的方法有三个:手动mknod利用devfs利用udevUdev是今后发展的趋势第一、什么是udev? 这篇文章UDEV Primer给我们娓娓道来,花点时间预习一下是值得的。当然,不知道udev是什么也没关系, 把它当个助记符好了,有了下面的上路指南,可
2011-07-12 18:51:37
892
翻译 网络设备驱动基础
在已挂装磁盘和数据包发送接口之间,存在着一些非常重要的不同。首先,磁盘在 /dev 目录中作为一个特殊文件而存在,而网络接口并没有类似的 /dev 目录入口点。普通的文件操作(读取、写入等等)对网络接口来讲没有任何意义,因此,无法将 Unix 的“所有东西都是文件”这一思想应用于
2011-07-12 17:27:44
783
转载 深入剖析uClinux
uclinux表示micro-control linux.即“微控制器领域中的Linux系统”,,是Lineo公司的主打产品,uCLinux是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。uCLinux主要是针对目标处理器没有存储管理单元MMU(Memo
2011-07-12 10:54:35
632
转载 linux kernel 2.4 和 2.6 的区别
随着Linux2.6的发布,由于2.6内核做了教的改动,各个设备的驱动程序在不同程度上要进行改写。为了方便各位Linux爱好者我把自己整理的这分文档share出来。该文当列举了2.6内核同以前版本的绝大多数变化,可惜的是由于时间和精力有限没有详细列出各个函数的用法。特别声明:该文
2011-07-12 10:38:04
688
转载 Linux内核模块导出后无法调用问题解决(模块间函数调用通讯)
Linux模块间通讯方法非常的多,最便捷的方法莫过于函数符号导出,然后直接调用。然而在linux2.6.26以后的内核中模块的符号导出经常会出现问题,一个模块中的导出符号不能被另外一个模块进行调用。这个使得处理有依赖关系的模块非常的头疼。 1. 符号导出函数EXPORT_SYMB
2011-07-08 16:04:39
1080
转载 Linux下Rtl8139too网卡设备驱动程序关键函数剖析
static int __devinit rtl8139_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)函数功能描述:赋给pci_driver结构体中的probe函数指针,用于当PCI核心检测到一个
2011-07-07 10:10:22
933
转载 linux内核IOCTL网络控制框架实现分析
linux内核IOCTL网络控制框架实现分析 作者:松哥email:jccz_zys@tom.comMSN: jccz_zys@163.netQQ: 15210449 目录 一、概述... 3二、用户空间ioctl控制函数调用形式... 3三、内核主要函数调用框架... 3四、IOCTL框架源代码分析... 4
2011-06-29 15:32:00
1782
转载 Skype国际版最新版及老版本下载
Skype国际版最新版及老版本下载建议还是使用国际版,而不是tom版。三条理由:1、tom版的往往不是最新版。2、tom版广告太多,占用很多系统资源。3、tom版有监听程序,隐私和安全得不到保证。Skype最新正式版:http://download.skype.com/SkypeSetupFull.exehttp://upgrade.skype.com/SkypeSetup
2011-06-20 16:13:00
17694
转载 Linux定时器
struct--timer_list <--> 定时器(动态定时器/内核定时器)2007年08月04日 星期六 09:52struct timer_list<br />|-----------------------------------|<br />|struct list_head entry |<br />|unsigned long expires |<br />|void (*function)(unsigned long)|<br />|unsigned longdata |<br />|st
2011-05-18 15:20:00
894
转载 等待队列和异步信号
<br /> <br />DECLARE_WAIT_QUEUE_HEAD()的说明 <br /><br />(name) -- 生成一个等待队列头wait_queue_head_t,名字为name<br />-----------------------------------------------------------------<br />#define DECLARE_WAIT_QUEUE_HEAD (name) /<br />wait_queue_head_t name = __WAIT_QU
2011-05-18 14:58:00
812
1
转载 如何看懂描述SNMP中MIB的ASN.1
<br /><br />一、介绍<br />Abstract Syntax Notation One (ASN.1)是一种独立于机器的描述语言,用于描述在网络上传递的消息<br />标准包括: <br />ISO 8824-1 | ITU-T X.680: Specification of basic notation, <br />ISO 8824-2 | ITU-T X.681: Information object specification, <br />ISO 8824-3 | ITU-T X.6
2011-05-13 11:49:00
1162
转载 getopt
<br />getopt被用来解析命令行选项参数。就不用自己写东东处理argv了。<br />#include <unistd.h><br />extern char *optarg; //选项的参数指针<br />extern int optind, //下一次调用getopt的时,从optind存储的位置处重新开始检查选项。 <br />extern int opterr, //当opterr=0时,getopt不向stderr输出错误信息。<br />extern int optopt; //当命令行
2011-05-09 15:41:00
566
转载 Linux环境进程间通信(五): 共享内存(下)
<br />系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。<br />1、系统V共享内存原理<br />进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间中去。系统V共享内存通过shmget获得或创建一个IPC共享内存区域,并返回相
2011-05-05 10:20:00
543
转载 Linux环境进程间通信(五): 共享内存(上)
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,这样,数据内容一直保存在共享内存中,并没有写回文件。共享内存中的内容往往是在解除映射时才写回文件的。因此,采用共
2011-05-05 10:18:00
699
转载 浅谈以太网帧格式
浅谈以太网帧格式<br /> <br /> <br />一、Ethernet帧格式的发展 <br />1980 DEC,Intel,Xerox制订了Ethernet I的标准 <br />1982 DEC,Intel,Xerox又制订了Ehternet II的标准 <br />1982 IEEE开始研究Ethernet的国际标准802.3 <br />1983 迫不及待的Novell基于IEEE的802.3的原始版开发了专用的Eth
2011-04-13 18:31:00
1092
UPnP WLANConfiguration Service
2010-10-21
UPnP-arch-DeviceArchitecture-v1.1
2010-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人