自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (52)
  • 收藏
  • 关注

转载 如何使用 epoll? 一个 C 语言实例

#include #include #include #include #include #include #include #include #include #include #define MAXEVENTS 64static intmake_socket_non_blocking (int sfd){ int flags, s; flags = fc

2013-03-28 16:24:07 748

转载 网络协议栈(1)从tcp的connect开始

一、基本结构内核中网络模块有眼花缭乱的数据结构,而且从名字和功能上看还没啥差别,所以对代码的理解还是有不小影响的。这里就是一个网络的开始阶段,然后尝试以这个为入口,看看系统中的网络的相关模块和功能实现。1、socket        根据 毛德操 《linux情景分析》下册863页有一个比较合理的解释:“socket和sock是同一个事物的两个方面。不妨说,socket结构是面向进程和

2013-03-27 17:18:03 946

转载 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

转载 linux socket 阻塞 listen

首先在创建socket,,然后绑定什么就不说了,,,然后listen 监听前面创建的socket(你可以把listen当然是后台运行的监控一样)listen语句之后一般会有accept。这个是接受连接请求的。当监听到有连接请求来的时候,,,accept就会 重新创建一个socket(注意,该socket才是真正用来通信的)。。。。。。。到这里楼主可明白了。。。。前面自己创建的s

2013-03-27 13:30:50 4722

转载 timer

times: 用来统计进程及其子进程执行所消耗的CPU时间。常见用法是在不同地方调用两次这个函数,从而可以计算出进程或子进程在这两次调用之间消耗了多少CPU时间。time: 返回当前相对于 Epoch (在linux/unix里,这个时间一般指 1970年1月1日0点0分0秒)所经过的秒数。 常见用法是在不同地方调用两次这个函数,从而可以计算这两处调用之间系统时间过了多少秒。gett

2013-03-19 10:05:01 714

原创 添加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

转载 内核程序,makefile分析(转自CSDN)

内核模块----linux内核的整体结构庞大,其中包含的组件也很多,如何使用需要的组件?1--把所有的组件都编译进内核文件,即zImage,bzImage,但这样会导致两个问题:一是生产的内核文件过大,二是,如果要添加或删除某个组件要重新编译整个内核。内核模块机制---提供一种机制能让内核文件(zImage,bzImage)本身并不包含某组件,而是在该组件需要被使用的时候,动态的添加到

2013-03-18 15:50:20 850 1

转载 socket通信的几个关键步骤

转自点击打开链接面向连接的socket通信就像与对方打电话,首先需要通过电话建立一个连接,连接建立好之后,彼此才能双向通信。它有几个关键步骤服务器端通常以守护进程的方式实现:1: 创建守护进程2:获取或注册服务3:创建socket并绑定地址4:开始监听5:接收客户端连接请求6:进行数据传输客户端1:获取或注册服务2:创建socket3:发

2013-03-14 10:49:56 1219 2

转载 socket编程之addrinfo结构体与getaddrinfo函数

点击打开链接有个小例子

2013-03-14 10:48:34 679

转载 玩转c链表 链表模板list.h

转自点击打开链接代码#ifndef __C_LIST_H#define __C_LIST_Htypedef unsigned char u8;typedef unsigned short u16;typedef unsigned int u32;typedef unsigned long size_t;#define offset

2013-03-14 08:56:53 1614 1

转载 我的Linux书架

我的Linux书架

2013-03-13 17:47:43 588

原创 名人博客收录

陈莉君绝影 疯狂的程序员陈皓   酷壳平凡的程序员 一步一步写算法 超牛Mr.Right的专栏 :把内核的每个函数用法都做了简单的步骤总结冯青华的专栏 linux内核 网络编程 c高级编程http://www.oschina.net/开源中国kernel apilinux内核部件分析推荐资料eros的linux平台技术资料库  有交流qqLI

2013-03-13 17:32:34 983

转载 workqueue

7.6. Workqueues转自Workqueues are, superficially, similar totasklets; they allow kernel code to request that a function becalledat some future time. There are, however, some significant differen

2013-03-13 16:57:54 885

转载 玩转C链表

玩转C链表

2013-03-13 15:35:54 761

转载 Linux中的工作队列

http://www.cnblogs.com/wwang/archive/2010/10/27/1862202.htmlLinux中的工作队列Linux 的并发可管理工作队列机制探讨

2013-03-13 15:18:37 556

转载 linux 常用命令及技巧

linux 常用命令总结: 一。 通用命令: 1. date :print or set the system date and time 2. stty -a: 可以查看或者打印控制字符(Ctrl-C, Ctrl-D, Ctrl-Z等) 3. passwd: print or set the system date and time (用passwd -h查看) 4. log

2013-03-12 15:29:18 862

原创 beyond compare 使用时的tab与空格转换

tab与空格转换在tools -> File Formats  ,左下角有一个Edit file format default 选中Text Format, 在第三个选项卡Misc中调整tab是否用空格代替,重启bcompare,ok啦

2013-03-12 15:17:21 15294

转载 sk_buff结构 及操作函数 pull等,讲解较准确

7.1. sk_buff结构在Linux内核的网络实现中,使用了一个缓存结构(struct sk_buff)来管理网络报文,这个缓存区也叫套接字缓存。sk_buff是内核网络子系统中最重要的一种数据结构,它贯穿网络报文收发的整个周期。该结构在内核源码的include/linux/skbuff.h文件中定义。我们有必要了解结构中每个字段的意义。一个套接字缓存由两部份组成:·

2013-03-11 15:19:46 1501

转载 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 2764 2

转载 skb_put(skb,len)和skb_push(skb,len)的区别

skb_put() 增长数据区的长度来为memcpy准备空间. 许多的网络操作需要加入一些桢头, 这可以使用skb_push来将数据区向后推, 为头留出空间. 请参见下图: ---------------------------------------- | head | data | | ----------------------------------------

2013-03-11 14:31:47 10715

转载 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

转载 linux驱动问题讲解--dev_queue_xmit

1. 凡是调用dev_queue_xmit的对象都是一个网络设备。  解答:这个思路是错误的。因为dev_queue_xmit是有网络设备无关层调用的函数,调用对象调用该函数之后,函数会判断skb中的dev字段,根据这个字段指示的设备调用该设备的发送函数hard_start_xmit来对skb进行转发。  2. 凡是由dev_queue_xmit调用hard_start_xmit发

2013-03-11 11:19:34 2896 1

转载 linux驱动开发的经典书籍

Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为《linux_device_driver 3rd Edition》,这是一本很经典的书,无奈Linux的东东还是过于庞大,这本侧重于实战的书籍也只能停留在基本的接口介绍上,更深入的东东只能靠我们自己摸索了。但万事总有一个开头,没有对Linux驱动整体框架的把握是很难做一个优秀的驱动开发者的。除了这本Jonathan Corbet,Gre

2013-03-11 10:36:39 1198 1

转载 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 6894

转载 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

转载 sk_buff

http://www.cnblogs.com/iceocean/articles/1594160.htmlhttp://simohayha.iteye.com/blog/556168

2013-03-06 08:59:24 667

转载 epoll使用详解(精髓)

epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且

2013-03-04 10:07:50 419

内核分析—中断

1. 中断 1. 软中断 2. 硬中断 3. 定时器代码分析 4. from aka 1. 硬件中断 2. 软中断 5. from lisolog 1. index 2. 内部中断 3. 外部中断 4. 后续处理 6. 软中断代码线索 7. 2. 4软中断机制

2013-02-21

Google_C++编码规范_中文.pdf

李开复: 刚才发现Google的C++编码规范已经公开了,那就说两句,我认为这是地球上最好的一份C++编程规范,没有之一,建议广大国内外IT研究使用。 是google的 C++编码规范,确实很好的文档,各位有兴趣可以翻阅

2012-10-15

无锁编程简介

无锁编程简介 清晰明了 适合刚接触无锁编程的人

2012-08-31

memcached-1.2.6-win32-src

memcached的windows下可以运行的代码,win32版本的

2012-08-27

memcached_allocator_slab_langwan

memcached_allocator_slab_langwan.pdf,一位高手写的关于memcached的slab分配及LRU机制,清晰明了,一看就懂,谢谢作者!

2012-08-22

understand2.0

很强大的代码分析工具 帮你快速的分析出代码结构 流程

2012-08-18

memaslap 使用说明

memaslap 使用说明 基于ubuntu 11.04 memcached 测试环境搭建

2012-08-10

Google_C++_Style_Guide

Google的编码规范 让你的代码更清晰 可读性更强 编程必备

2012-07-31

The OpenCL Specification

The OpenCL Specification Khronos OpenCL Working Group写的

2012-07-24

AMD APP SDK 安装指南

AMD APP SDK 安装指南 可以让一个新手快速的安装上AMD APP SDK 包括windows和linux

2012-07-23

memcached 网络部分详解

自己总结的memcached的网络部分,主要是TCP 套接字编程方面,有兴趣的可以看看。

2012-07-02

Memory System on Fusion APU

讲述了APU上的GPU访问内存的模式,有很多小的code sample,方便理解和学习opencl编程(GPU优化方面)。

2012-06-29

AMD_Accelerated_Parallel_Processing_OpenCL_Programming_Guide

AMD出的教程,全面,深入浅出,看完这本书就可以完全掌握opencl并行了

2012-06-28

POSIX多线程程序设计中文版

经典中的经典,不多说,浅显易懂,跨平台开发必备的书籍。

2012-06-27

Skype 聊天软件

很好的聊天软件,免费打电话,发信息,使用起来非常方便

2012-06-27

SourceInsight

很好的代码分析软件,让你更方便的读代码,跟踪代码。

2012-06-27

Heterogeneous.Computing.with.OpenCL.pdf

很权威的一本书 详细讲解了Opencl在异构系统下的开发,很适合初学者入门

2012-06-27

Git-2.14.1-64-bit.exe

Git-2.14.1-64-bit.exe git for windows. Git-2.14.1-64-bit.exe git for windows. Git-2.14.1-64-bit.exe git for windows.

2017-09-22

Onvif对接Rtsp实时媒体流(基于live555)

Onvif对接Rtsp实时媒体流(基于live555);Onvif对接Rtsp实时媒体流(基于live555);Onvif对接Rtsp实时媒体流(基于live555)

2017-09-22

onvif源码(V2.4)

v2.4版本的onvif源代码,实现了客户端和服务器的发现功能。v2.4版本的onvif源代码,实现了客户端和服务器的发现功能。

2017-09-22

C语言经典编程900例 经典标准代码 源代码

C语言经典编程900例 经典标准代码 源代码

2013-07-01

RFC2326(RTSP) 中文版

实时流协议(RTSP)是应用层协议,控制实时数据的传送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频的受控、点播成为可能。数据源包括现场数据与存储在剪辑中数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、组播UDP与TCP,提供途径,并为选择基于RTP(RFC1889)上传送机制提供方法。

2013-05-09

RFC3550中文版 (RTP/RTCP)

本文描述RTP (real-time transport protocol),实时传输协议。RTP 在多点传送(多播) 或单点传送(单播)的网络服务上,提供端对端的网络传输功能,适合应用程序传输实时数据, 如:音频,视频或者仿真数据。RTP 没有为实时服务提供资源预留的功能,也不能保证QoS (服 务质量)。数据传输功能由一个控制协议(RTCP)来扩展,通过扩展,可以用一种方式对数据 传输进行监测控制,该协议(RTCP)可以升级到大型的多点传送(多播)网络,并提供最小限 度的控制和鉴别功能。RTP 和RTCP 被设计成和下面的传输层和网络层无关。协议支持RTP 标 准的转换器和混合器的使用。 本文的大多数内容和旧版的RFC1889 相同。在线路里传输的数据包格式没有改变,唯一的改变 是使用协议的规则和控制算法。为了最小化传输,发送RTCP 数据包时超过了设定的速率,而 在这时,很多的参与者同时加入了一个会话,在这样的情况下,一个新加入到(用于计算的可升 级的)计时器算法中的元素是最大的改变。 目录(Table of Contents) 1. 引言 (Introduction) 1 1 术语(Terminology) 2 RTP使用场景(RTP Use Scenarios) 2 1 简单多播音频会议( Simple Multicast Audio Conference) 2 2 音频和视频会议(Audio and Video Conference) 2 3 混频器和转换器(Mixers and Translators) 2 4 分层编码(Layered Encodings) 3 定义(Definitions) 4 字节序,校正和时间格式(Byte Order, Alignment, and Time Format) 5 RTP数据传输协议(RTP Data Transfer Protocol) 5 1 RTP 固定头域(RTP Fixed Header Fields) 5 2 多路复用RTP 会话(Multiplexing RTP Sessions) 5 3 RTP 头的配置文件详细变更(Profile-Specific Modifications to the RTP Header) 5 3 1 RTP 报头扩展(RTP Header Extension) 6 RTP控制协议(RTP Control Protocol)-- RTCP 6 1 RTCP包格式(RTCP Packet Format) 6 2 RTCP传输间隔(RTCP Transmission Interval) 6 2 1 维护会话成员数目(Maintaining the number of session members) 6 3 RTCP包的发送与接收规则(RTCP Packet Send and Receive Rules) 6 3 1 计算RTCP 传输间隔(Computing the RTCP Transmission Interval ) 6 3 2 初始化(Initialization) 6 3 3 接收RTP 或RTCP (非BYE)包(Receiving an RTP or Non-BYE RTCP Packet) 6 3 4 接收RTCP (BYE)包(Receiving an RTCP BYE Packet) 6 3 5 SSRC 计时失效(Timing Out an SSRC ) 6 3 6 关于传输计时器的到期(Expiration of Transmission Timer) 6 3 7 传输一个 BYE 包(Transmitting a BYE Packet) 6 3 8 更新we_sent (Updating we_sent) 6 3 9 分配源描述带宽(Allocation of Source Description Bandwidth ) 6 4 发送方和接收方报告(Sender and Receiver Reports) 6 4 1 SR:发送方报告的RTCP包(SR: Sender report RTCP packet) 6 4 2 RR:接收方报告的RTCP 包(RR: Receiver Report RTCP Packet) 6 4 3 扩展发送方和接收方报告(Extending the Sender and Receiver Reports ) 6 4 4 分析发送方和接收方报告(Analyzing Sender and Receiver Reports ) 6 5 SDES:源描述RTCP包(SDES: Source description RTCP packet) 6 5 1 CNAME:规范终端标识符的SDES 数据项(CNAME: Canonical End-Point Identifier SDES Item) 6 5 2 NAME:用户名的SDES 数据项(NAME: User name SDES item) 6 5 3 EMAIL:电子邮件地址的SDES 数据项(EMAIL: Electronic Mail Address SDES Item) 6 5 4 PHONE:电话号码的SDES 数据项(PHONE: Phone Number SDES Item) 6 5 5 LOC:地理用户地址的SDES 数据项(LOC: Geographic User Location SDES Item) 6 5 6 TOOL:应用程序或工具名字的SDES 数据项(TOOL: Application or Tool Name SDES Item) 6 5 7 NOTE:通知/状态的SDES 数据项(NOTE: Notice/Status SDES Item) 6 5 8 PRIV:私有扩展的SDES 数据项(PRIV: Private Extensions SDES Item) 6 6 BYE:Goodbye RTCP 包(BYE: Goodbye RTCP packet) 6 7 APP:定义应用程序的RTCP 包(APP: Application-Defined RTCP Packet) 7 RTP转换器和混频器(RTP Translators and Mixers) 7 1 概述(General Description ) 7 2 在转换器中的RTCP 数据处理(RTCP Processing in Translators) 7 3 在混频器中的RTCP 数据处理(RTCP Processing in Mixers ) 7 4 级联混频器(Cascaded Mixers) 8 SSRC 标识符的分配和使用(SSRC Identifier Allocation and Use) 8 1 冲突概率(Probability of Collision ) 8 2 冲突解决和循环检测(Collision Resolution and Loop Detection) 8 3 在分层编码中使用(Use with Layered Encodings) 9 安全(Security ) 9 1 机密性(Confidentiality) 9 2 身份验证和消息完整性(Authentication and Message Integrity ) 10 拥塞控制(Congestion Control) 11 网络和传输协议之上的RTP (RTP over Network and Transport Protocols) 12 协议常量摘要(Summary of Protocol Constants) 12 1 RTCP 包类型(RTCP Packet Types) 12 2 SDES 类型(SDES Types) 13 RTP 概况和负载格式详细说明 (RTP Profiles and Payload Format Specifications) 14 安全考虑(Security Considerations) 15 IANA 考虑(IANA Considerations) 16 知识产权声明(Intellectual Property Rights Statement) 17 鸣谢(Acknowledgments) 附录A 算法(Algorithms) 附录A 1 RTP 数据头有效性检查(RTP Data Header Validity Checks ) 附录A 2 RTCP 数据头有效性检查(RTCP Header Validity Checks) 附录A 3 确定RTP包预期数目和丢失数目(Determining Number of Packets Expected and Lost) 附录A 4 生成SDES RTCP包(Generating RTCP SDES Packets) 附录A 5 解析RTCP SDES 包(Parsing RTCP SDES Packets) 附录A 6 生成32位随机标识符(Generating a Random 32-bit Identifier 附录A 7 计算RTCP 传输间隔(Computing the RTCP Transmission Interval) 附录A 8 估测两次到达间隔的抖动(Estimating the Interarrival Jitter) 附录B 与RFC1889 不同之外(Changes from RFC 1889) 参考书目(References) 标准化引用(Normative References ) 资料性引用(Informative References) 作者地址 完整的版权声明

2013-05-09

The C Programming Language中文第二版的习题答案

对应于c programming language中文第二版的习题答案

2013-05-07

Linux下面如何进行C语言编程技术教程.pdf

教你在Linux下面如何进行C语言编程技术教程 最基础的教程 gcc + makefile 一看就懂

2013-05-03

深入Linux设备驱动程序内核机制- 扫描版-有书签目录

深入Linux设备驱动程序内核机制 讲解的非常不错

2013-04-22

Google C++编程风格指南.pdf

Google 的开源项目大多使用C++开发。每一个C++程序员也都知道,C++具有很多强大的 语言特性,但这种强大不可避免的导致它的复杂,这种复杂会使得代码更易于出现bug、难于 阅读和维护。 本指南的目的是通过详细阐述在C++编码时要怎样写、不要怎样写来规避其复杂性。这些规则 可在允许代码有效使用C++语言特性的同时使其易于管理。 风格,也被视为可读性,主要指称管理C++代码的习惯。使用术语风格有点用词不当,因为这 些习惯远不止源代码文件格式这么简单。 使代码易于管理的方法之一是增强代码一致性,让别人可以读懂你的代码是很重要的,保持统一 编程风格意味着可以轻松根据“模式匹配”规则推断各种符号的含义。创建通用的、必需的习惯用 语和模式可以使代码更加容易理解,在某些情况下改变一些编程风格可能会是好的选择,但我们 还是应该遵循一致性原则,尽量不这样去做。 本指南的另一个观点是C++特性的臃肿。C++是一门包含大量高级特性的巨型语言,某些情况 下,我们会限制甚至禁止使用某些特性使代码简化,避免可能导致的各种问题,指南中列举了这 类特性,并解释说为什么这些特性是被限制使用的。 由Google 开发的开源项目将遵照本指南约定。 注意:本指南并非C++教程,我们假定读者已经对C++非常熟悉。

2013-04-19

LINUX 设备驱动开发详解 源码

LINUX 设备驱动开发详解 + 源码 非常有用

2013-03-20

UNIX网络编程第二卷

UNIX网络编程第二卷 进程间通信 经典书籍

2013-03-14

Unix网络编程

《Unix网络编程》这本书,一通百通,无论Windows还是Unix/Linux,都是一样的

2013-03-14

UNIX编程艺术[中文版]

UNIX编程艺术[中文版] ,看完以后,你就明白什么是真正的编程文化了

2013-03-14

内核协议栈数据包转发完全解析

内核协议栈数据包转发完全解析

2013-03-06

Linux多核绑定硬件中断到不同 CPU

Linux多核下绑定硬件中断到不同 CPU

2013-02-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除