linux编程
文章平均质量分 78
cxh342968816
这个作者很懒,什么都没留下…
展开
-
Linux网络层 ip_rcv()函数代码分析(__pskb_pull_tail)
<br />int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt) <br />//几个结构sk_buff套接字缓存,net_device网络设备结构,是所有网络结构的基础数据结构<br />,packet_type原型<br />struct packet_type <br />{<br /> unsigned short type; /* This is really htons(ether_ty转载 2010-12-10 15:07:00 · 3697 阅读 · 0 评论 -
fd_set
select()机制中提供一fd_set的数据结构,实际上是一long类型的数组,每一个数组元素都能与一打开的文件句柄(不管是socket句柄,还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据IO状态修改fd_set的内原创 2011-08-15 22:35:13 · 539 阅读 · 0 评论 -
编译应用程序
用前面所介绍的基本概念,已经可以编译全功能的Gtk+/Gnome应用程序了。但是还有一个大问题:如何配置编译选项?一些实用工具如automake、autoconf、libtool等,可以用来简化这一过程。 为了方便维护,同时,也是为了便于使用这些实用工具,应该在编写代码时遵从一些约定。如果要将程序发布为自由软件,最好能使程序源代码的目录结构遵从“GNU项目编码标准”。即使应用程序是私有的商用程序转载 2011-06-10 11:07:00 · 780 阅读 · 0 评论 -
交叉编译环境介绍
交叉编译是嵌入式开发过程中的一项重要技术,它的主要特征是某机器中执行的程序代码不是在本机编译生成,而是由另一台机器编译生成,一般把前者称为目标机,后者称为主机。采用交叉编译的主要原因在于,多数嵌入式目标系统不能提供足够的资源供编译过程使用,因而只好将编译工程转移到高性能的主机中进行。 linux下的交叉编译环境重要包括以下几个部分: 针对目标系统的编译器gcc 针对目标系统的二进制工具binutils 目标系统的标准c库glibc 目标系统的linux内核头文件 交叉编译环境的建立步骤 下载源代码 下载包括转载 2011-05-16 11:08:00 · 2267 阅读 · 0 评论 -
struct sock结构的简单注释
<br />内核网络四层结构:BSD socket层、INET socket层、IP层、数据链路层<br />sock结构工作在INET socket层,所有BSD socket层的操作都通过struct sock<br />及其域字段prot指针转化为prot锁指向的函数处理,所以sock结构是维系<br />BSD socket层和INET socket层的纽带,其重要性是不言而喻的。<br />下面是对sock结构的简单注释,有些没有的待我弄懂后再来修改,^_^<br />struct sock {<原创 2011-03-24 10:30:00 · 1036 阅读 · 0 评论 -
linux内核网络栈代码的准备知识
1.linux内核ipv4网络部分分层结构: <br />BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件 主要有:/net/socket.c /net/protocols.c etc<br /><br />INET socket层:BSD socket是个可以用于各种网络协议的接口,而当用于tcp/ip,即建立了AF_INET形式的socket时, 还需要保留些额外的参数,于是就有了struct sock结构。原创 2011-03-23 21:50:00 · 826 阅读 · 0 评论 -
elf文件格式分析
<br /><br /> <br />估计用过linux的人都知道elf文件格式吧,其实在嵌入式领域也是用到elf文件格式,比如ads软件编译生成的就是axf文件格式的文件,这个其实是elf文件格式的扩展, 用gcc在编译时包含dwarf-2格式的调试信息,就可被ads识别,其实像arm公司的最新软件,realview等可直接支持elf文件的调试。<br /> 下面就来讲下elf文件格式:<br />为了更好的完整的表述elf,我以一个例子来说:<br />my.c是libmy.so的源文件:<b转载 2011-03-23 09:24:00 · 1479 阅读 · 0 评论 -
socket的结构体
<br /> 用户使用socket系统调用编写应用程序时,通过一个数字来表示一个socket,所有的操作都在该数字上进行,这个数字称为套接字描述符。在系统调用的实现函数里,这个数字就会被映射成一个表示socket的结构体,该结构体保存了该socket的所有属性和数据。在内核的协议中实现中,关于表示socket的结构体,是一个比较复杂的东西,下面一一介绍。<br /> struct socket。<br /> 这是一个基本的BSD socket,我们调用socket系统调用创建的各种不同类型的so原创 2011-03-24 10:28:00 · 8653 阅读 · 0 评论 -
套接字编程基本的数据结构struct sockaddr_in, struct sockaddr,struct in_addr
<br />一、结构体 struct sockaddr_in, struct sockaddr, struct in_addr<br />struct sockaddr_in, struct sockaddr,struct in_addr,这是网络编程中常用的结构体,每次都记不住它们各自的成员是啥,需要临时查,为方便以后的查看,在这里总结下。<br />struct sockaddr {<br />unsigned short sa_family; /* 地址族, AF_xxx */<br />ch转载 2011-03-03 21:04:00 · 837 阅读 · 0 评论 -
tcp/ip网络字节序
<br />1.htons htonl ntohs ntonl<br />网络字节顺序与本地字节顺序之间的转换 <br /> h to n : host to network <br /> n to h : network to host <br /> s : short <br /> l : long <br /> 主机字节顺序跟芯片有关,如Intel就是低位在前,高位在后 <br转载 2011-03-03 21:13:00 · 5313 阅读 · 0 评论 -
struct msghdr
我们从一个实际的数据包发送的例子入手,来看看其发送的具体流程,以及过程中涉及到的相关数据结构。在我们的虚拟机上发送icmp回显请求包,ping另一台主机172.16.48.1。我们使用系统调用sendto发送这个icmp包。 ssize_t sendto(int转载 2011-08-16 15:58:06 · 976 阅读 · 0 评论