自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (24)
  • 收藏
  • 关注

转载 debian包管理

apt-cache search # ------(package 搜索包)apt-cache show #------(package 获取包的相关信息,如说明、大小、版本等)apt-get install # ------(package 安装包)apt-get install # -----(package --reinstall 重新安装包)apt-get -f install # ---

2011-06-17 20:16:00 457

原创 内联函数

inline函数我们看下面的函数,函数体中只有一行语句:     double Average(double total, int number){       return total/number;      } 定义这么简单的函数有必要吗?实际上,它还是有一些优点的:第一,它使程序更可读;第二,它使这段代码可以重复使用。但是,它也有缺点:当它被频繁地调用的时候,由于调用函数的开销,会对应用程

2011-06-17 15:32:00 440

原创 struct sk_buffer

sk_buff结构体 收藏struct sk_buff可能是linux网络代码中最重要的数据结构,它表示接收或发送数据包的包头信息,并包含很多成员变量供网络代码中的各子系统使用。 这个结构被网络的不同层(MAC或者其他二层链路协议,三层的IP,四层的TCP或UDP等)使用,并且其中的成员变量在结构从一层向另一层传递时改变。 L4向L3传递前会添加一个L4的头部,同样,L3向L2传

2011-06-15 10:50:00 752

原创 linux 常用命令

uname -a 查看内核版本ls -al 显示所有文件的属性pwd 显示当前路径cd - 返回上一次目录 cd ~ 返回主目录date s 设置时间、日期cal 显示日历 cal 2006bc 计算器具man & info 帮助手册locale 显示当前字体 locale -a 所有可用字体 /etc/sysconfig/i18n设置文件LANG=en 使用英

2011-06-14 15:00:00 377

原创 网络编程中数据格式的转换

inet_aton : 用于将32位的数字点形式表示的字符串IP地址与32位的网络字节序顺序的二进制形式的IP地址进行转换,成功时返回1,否则返回0,转换后的IP地址存储在参数inp中。inet_ntoa : 将网络地址转换成"."点隔的字符串格式。htonl : 表示将32位的主机字节顺序转化为32位的网络字节顺序。htons : 表示将16位的主机字节顺序转化为16位的网络字节顺序

2011-06-11 17:53:00 604

原创 platform_driver,plateform_device,device,driver,net_device

  内核中的platform driver机制需要将设备本身的资源注册进内核,由内核统一管理,在驱动程序中使用这些资源时通过platform device提供的标准接口进行申请并使用。这样可以提高驱动和资源管理的独立性。本文的目的就是希望弄清楚platform device和driver之间的关系。1.1 相关数据结构1.1.1 device这个结构体定义为:st

2011-06-09 20:52:00 926

原创 网络驱动

工作需要写了我们公司一块网卡的Linux驱动程序。经历一个从无到有的过程, 深感技术交流的重要。Linux作为挑战微软垄断的强有力武器,日益受到大家的喜 爱。真希望她能在中国迅速成长。把程序文档贴出来,希望和大家探讨Linux技术 和应用,促进Linux在中国的普及。 本文可随意转载,但请不要在盈利性出版物上刊登。 Linux操作系统网络驱动程序编写 一.Lin

2011-06-09 19:46:00 463

原创 网络驱动

工作需要写了我们公司一块网卡的Linux驱动程序。经历一个从无到有的过程, 深感技术交流的重要。Linux作为挑战微软垄断的强有力武器,日益受到大家的喜 爱。真希望她能在中国迅速成长。把程序文档贴出来,希望和大家探讨Linux技术 和应用,促进Linux在中国的普及。 本文可随意转载,但请不要在盈利性出版物上刊登。 Linux操作系统网络驱动程序编写 一.Lin

2011-06-09 19:45:00 796

原创 mac+PHY

问:如何实现单片以太网微控制器?答:诀窍是将微控制器、以太网媒体接入控制器(MAC)和物理接口收发器(PHY)整合进同一芯片,这样能去掉许多外接元器件。这种方案可使MAC和PHY实现很好的匹配,同时还可减小引脚数、缩小芯片面积。单片以太网微控制器还降低了功耗,特别是在采用掉电模式的情况下。问:以太网MAC是什么?答:MAC就是媒体接入控制器。以太网MAC由IEEE-802.3以太网标准

2011-06-09 18:42:00 2053

原创 网卡(MAC+PHY)

一块以太网网卡包括OSI(开方系统互联)模型的两个层。物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。1.网卡的基本结构 以太网卡中数据链路层的芯片一般简称之为MAC控制器,物理层的芯片我们简称之为P

2011-06-09 18:30:00 3017

原创 net_device结构理解

结构体net_device代表了一个网络设备接口,它是我们理解网络设备驱动程序的关键。这里,我们选择其中的一些重要成员,一一作详细分析,并结合以太网设备,看看Linux内核是如何为以太网设备提供结构体中某些成员的缺省值的。 在Linux内核源代码中是这样为这个结构体作注释的:实际上,这个结构体是一个很大的错误,它把I/O数据和更高层的数据混合在一起,而且它几乎必须知道INET模块

2011-06-09 15:38:00 879

原创 notification机制

 1. 基本机制 1)数据结构 struct notifier_block { int (*notifier_call)(struct notifier_block *self, unsigned long, void *); struct notifier_block *next; int priority; /*用于对注册者进行优先级排队,高优先级的处理例程将被优先执行,由注册者自己指

2011-06-08 20:50:00 1975

原创 containof和list_entry的实现方式

他们实现方式如下:#define list_entry(ptr, type, member) ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))其中,(unsigned long)(&((type *)0)->member))是关键,它计算出了成员变量member在结构体中的偏移量 

2011-06-07 09:47:00 1110

原创 wait_queue_t,wait_queue_head_t的认识

wait_queue_head_t属于设备,设备可以维护几个wait_queue_head_t以等待不同类型的事件,wait_queue_t跟进程相关,wait_event把wait_queue_t的进程加入到设备的wait_queue_head_t,中来等待事件的发生,事件发生后wake_up_interruptible会唤醒设备中wait_queue_head——t中的所有wait_queue

2011-06-03 11:53:00 1274

原创 atomic_t原子操作

<br />  所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。  原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/asm/atomic.h文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。  原子操作主要用于实现资源计数,很多引用计数(refcnt)就是通过原子操作实现的。原子类型定义如下:typedef str

2011-06-02 15:50:00 1024

原创 sleep与信号

<br />进程进入sleep时,发生了信号,handler执行完之后还会进sleep吗?这个问题太傻了,sleep本身就是进程放弃了cpu,此时control flow在其他进程,sleep使用系统的定时器实现的,cpu并没有focus在sleep这个函数(暂且称为函数),信号来了,进程又获得了cpu,他是不会主动放弃cpu,除非他等待的条件不满足。

2011-06-01 11:37:00 591

原创 poll非阻塞IO的理解

<br />先理解阻塞与非阻塞。阻塞就是由于工作不能立刻完成,进程放弃cpu,非阻塞就是任务不能立刻完成,函数直接返回或者一直轮询操作。<br />起初想不明白如果对文件的可读进行poll的话,如果没有数据,进程就会睡眠从而引起切换,这不是典型的阻塞吗?后来想了下,poll虽然拥塞了,但对于之后的read而言,只有当有数据写入时,poll才会返回,read就可以顺利执行而不必睡眠,对read而言是阻塞的

2011-06-01 10:55:00 1620

原创 poll函数的实现原理

<br />如果当前不可读,那么在sys_poll->do_poll中当前进程就会睡眠在等待队列上,这个等待队列是由驱动程序提供的(就是poll_wait中传入的那个)。当可读的时候,驱动程序可能有一部分代码运行了(比如驱动的中断服务程序),那么在这部分代码中,就会唤醒等待队列上的进程,也就是之前睡眠的那个,当那个进程被唤醒后do_poll会再一次的调用驱动程序的poll函数,这个时候应用程序就知道是可读的了。

2011-06-01 09:16:00 1533

跟我一起写Makefile.pdf

详细的描述了Makefile的基本语法包含变量,控制流,默认规则等,可以作为Makefile很好的入门学习资料。

2020-04-27

做一名真正的程序员.pptx

共有三部分,第一部分1、程序员的基本素质。第二部分2、程序的编辑、编译、运行。第三部分3、代码规范。

2020-04-27

ultra edit 高亮显示配置文件

ue打开的文档无法进行高亮显示,用这个配置文件不错

2013-09-05

Linux内核0[1].11完全注释(赵炯)

Linux内核0[1].11完全注释(赵炯),适合初学者,代码量较少

2013-07-23

VC读取Excel中的数据

经自己验证,可以直接拿来使用的一个类,丰富你的类库

2013-07-23

iSCSI详细的说明文档

iSCSI详细的说明文档,原版英文的,可以看看

2013-07-23

RTL8201 数据手册

RTL8201 网络phy芯片datasheet,仅供参考

2013-07-23

FAT文件系统原理.

该文档详细阐述了fat的基本原理及数据结构的组成

2013-07-23

MMU与CACHE详解

linux MMU CACHE 详细阐述了MMU CACHE在系统中的作用和二者之间的关系

2013-07-23

保护模式与实模式

描述了实模式与保护模式的区别,及启动过程中二者的切换过程!!

2011-12-12

编译和连接

详细介绍了现代编译器与连接器的基本原理,浅显易懂!

2011-12-12

sk_buff详解.pdf

详细描述skbuffer结构体中跟成员变量的含义及使用方法

2011-12-12

usb spec 2.0

usb spec 协议。。。。。。。。。。。。。。。。

2011-10-28

网络子系统在链路层的收发过程剖析

网络 驱动 接收 发送 链路层,分析源码,比较清楚

2011-10-28

DM9000网卡驱动分析

DM9000 网卡驱动 分析,简单明了,适合初学者。。。。。。

2011-10-28

shell编程从入门到精通

shell编程,适用于linux,unix等环境。。。。。。。。。

2011-10-28

跟我一起写Makefile

Makefile介绍的比较详细简单易懂。。。。。。。。。。

2011-10-28

Essential Linux Device Drivers

Linux kernel driver Essential Linux Device Drivers

2011-10-28

常用的元器件pcb封装库

比较全的封装库 完整的封装库,自己常用的基本上都有了

2011-06-11

51单片机C程序设计

对于初学者,是个不错的资料!!!!!!!!!

2009-08-28

SD卡最完整的中英文资料

SD卡最完整的中英文资料,SD卡最完整的中英文资料

2009-08-28

空空如也

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

TA关注的人

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