自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 C语言中的typedef(包含与#define的区别)

今天在做一个编程练习的时候,想要

2014-05-19 16:12:49 629

转载 Linux GDT

[Linux]GDT(Global Description Table)(2012-12-06 10:53:19)转载▼1. What is GDT在Protected Mode下,一个重要的必不可少的数据结构就是GDT(Global Descriptor Table)。为什么要有GDT?我们首先考虑一下在Real Mode下的编程模型:在Real Mode下,我们

2014-04-15 22:26:11 1888

转载 Linux分段

linux中的分段  2012-11-04 19:33:37|  分类:kernel-pm |举报|字号 订阅x86的内存寻址大家都懂,为了兼容以前的产品,intel保留了段机制,然而linux中弱化了这一机制。下面先说下段机制的历史:       早在8086的时候cpu的地址总线是20根,这样本可以对2^20=1M的地址空间进行寻址,但是由于

2014-04-15 22:25:10 851

转载 Linux TCP/IP 协议栈的关键数据结构Socket Buffer(sk_buff )

从网上转载了一篇讲sk_buff的文章,讲的很清楚,最棒的是还有图。sk_buff结构可能是linux网络代码中最重要的数据结构,它表示接收或发送数据包的包头信息。它在中定义,并包含很多成员变量供网络代码中的各子系统使用。 这个结构在linux内核的发展过程中改动过很多次,或者是增加新的选项,或者是重新组织已存在的成员变量以使得成员变量的布局更加清晰。它的成员变量可以大致分为以下几类: 

2014-04-11 15:42:23 1051

原创 一个简单的makefile文件分析

前一段时间在一个altera开发板上面写了一个以太网卡驱动程序,随后

2014-04-11 15:27:37 657

原创 GNU中的make和makefile

说来惭愧呀,调试驱动代码的时候每天都在使用make命令,却不知道make命令究竟是用来做什么的,上周有个师弟问我make和makefile究竟是用来做什么的,我只是根据自己的理解给他说了一下,回头想想自己说的也不对呀,所以才回过头来好好再学习一下make命令和makefile.这部分的内容主要参考了《Linux程序设计第四版》和http://hi.baidu.com/tvbljlqlfkaejwr

2014-04-09 21:48:46 764

转载 touch命令

touch命令  2012-11-05 09:56:13|  分类: 默认分类|举报|字号 订阅用途更新文件的访问和修改时间。语法touch [  -a ] [  -c ] [  -m ] [  -f ] [  -r RefFile ] [ Time |  -t Time ] { File ... | Directory ..

2014-04-08 19:42:41 598

原创 c语言中return,eixt()和_exit()函数

自己写的程序中倒是经常使用到return,读程序的时候偶尔也会“邂逅”exit(),隐隐约约的记得自己在学习Linux应用程序设计的时候好像见过exit()和_exit(),只知道这几个东西都是用来结束一些东西的,但是对他们之间的区别却是一无所知,今天在看代码的时候忽然心血来潮准备把他们之间的区别总结一下,从此以后让他们清晰的存在于我深深的脑海里这些东西主要参考下面几篇文档,然后根据我自己的理

2014-04-07 22:09:12 1367

原创 C语言中main( int argc, char *argv[] )和getopt()函数学习

回头想想自己

2014-04-04 21:06:58 1032 1

原创 acm-BiliBili, ACFun… And More!

首先说明一下:这个程序我在自己的电脑上运行时没有问题的,但是提交上去之后总是会提示:Wrong Answer on test 1,有的人可能是因为以下的原因:1、是不是多case的2、输出格式不正确3、有没有考虑0的情况,这个简单的题花了好长时间我也没有找出原因在哪里,先跳过吧,如果高手看出问题在哪里了,希望高手给我指出来,谢谢#include#includ

2014-04-02 18:47:24 2050

原创 Linux网络设备驱动程序——alloc_netdev()与alloc_etherdev()

前一段时间一直在看FCoE交换机方面的的代码,忽然老师让把前一段时间看过的师兄写的关于一个CNA卡的代码改一下,原来的CNA卡的驱动是一个字符设备驱动,现在要把它改成网络设备驱动,本来没有怎么在意,还是准备以交换机那边的为主,后来发现看了这么长时间的代码,真的需要好好地写一下代码了,再说以前看了很多关于网络设备的知识,很多东西都已经遗忘了,现在开始好好写一下这个驱动的代码,先把这个网卡做成一个以太

2013-11-07 20:27:06 6495

原创 Linux设备驱动程序——read()、write()以及ioctl()

前一段时间在调试一个字符设备驱动程序的过程中使用到了,ioctl()那时候只是简单的了解了一下,现在回头来看一个字符设备驱动代码的时候发现还是很有必要把这部分内容学习一下,同时把相关的read和write函数也相应的学习一下。read()函数(关于read()函数的主要的内容来源于L《LInux设备驱动程序》和网上的别人的博客中的内容)关于函数的原型:#include

2013-10-23 16:37:38 7240

原创 Linux线程操作

线程操作声明:这部分的内容主要来源于Linux C程序设计大全 清华大学出版社首先了解一下几个概念:临界区:进程中访问临街资源的代码成为临界区,临界区内一般放的是1个以上的进程或者线程公用的数据临界资源:临界资源是指每次只允许一个进程访问的资源。常见的临界资源有:硬件:打印机,磁带机   软件:消息缓冲队列、变量、数组缓冲区Linux环境下使用pth

2013-10-14 16:56:30 580

原创 Linux设备驱动程序——I/O端口和I/O内存

每个外设都是通过读写寄存器来控制的,一般一个设备有几个寄存器,它们在内存地址空间或者I/O地址空间。这里需要学习一下i/O内存和I/O端口:一类CPU(如M68K,Power PC,ARM,Unicore等)把这些寄存器看作内存的一部分,寄存器参与内存统一编址,访问寄存器就通过访问一般的内存指令进行,所以,这种CPU没有专门用于设备I/O的指令(可以以此判定体系为哪种)。这就是所谓的“

2013-10-10 19:03:12 1003

转载 C语言基础知识——关键字之volatile

作用:这个关键字的作用是为了确保这条指令不会因为编译器的优化而省略,要求每次直接读取变量原来的值。volatile关键字是一种类型修饰符,它声明的类型变量可能被某些编译器的未知因素更改。例如操作系统、硬件或者其它的线程,当遇到这个关键字的时候,编译器就不会再对代码进行优化,从而可以提供对特殊地质的稳定访问。使用关键字的例子如下:int volatile nVint;当我们使用这个关

2013-08-29 11:01:10 542

原创 Linux设备驱动程序——驱动调试printk()

前一段时间学了一下,printk()打印语句,现在用起来又忘了,看了一下前一段时间做的笔记,不是很详细,所以决定再写一下和printk相关的调试的东西。算是复习一下吧。          首先,先熟悉一下printk函数,这个函数和printf函数很类似。只不过一个运行在用户态,一个运行在内核态。         首先需要说的是可以通过以下几种途径查看printk()函数的打印信息

2013-08-22 20:36:05 881

原创 动态数组

在做上一个acm编程习题的时候其实就考虑过动态数组的问题,只是后来没有用,所以就把它给忘了,不料做到下一个练习的时候,真的还得用到动态数组,虽然在

2013-08-21 19:32:00 847

转载 malloc()函数

从大一开始学习C语言已经5年多了,偶尔的时候也会编写一些小的程序,以前总是感觉自己的编程水平还凑活。上次参加一次编程比赛过程中,感觉很多东西很熟悉但是真正要写下来的话还是很麻烦,开始意识到自己的基础不牢。所以有空的时候也会编写一些程序、做一些acm编程联系练练手,巩固一下基础知识。这部分内容主要来自于百度百科和网络上的相关知识malloc()函数很早就学过了,但是现在基本上都忘了,现在复习

2013-08-21 16:34:20 596

原创 acm编程习题1001 DotNotation

1000题比较简单,不再写,从1001开始记录我的编程练习之路题目:love8909最近在学一种新的表达式表示法,称之为。定义如下: := | := "" | "." := exactly one of "+-*/" := exactly one of "0123456789"这是一个递归的定义,即是说单个的数字是在后连接任意数量的”.”(),然

2013-08-15 20:24:36 695

原创 Linux设备驱动程序——Linux设备驱动程序——内存和I/O基础知识学习:(2)内核中相关基础知识学习

接上篇内存和I/O基础知识学习:(1)内核中相关基础知识学习    Linux主要由5个模块组成、分别是进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。    进程调度模块用来负责控制进程对CPU资源的使用,通过调度使得各个进程能偶公平的访问CPU。内存管理模块用于确保各进程能够安全的共享内存。虚拟文件系统通过向所有的外部设备提供一个通用的文件接口,隐藏了各个硬件设

2013-08-13 15:32:48 886

原创 Linux设备驱动程序——内存和I/O基础知识学习:(1)内核中相关基础知识学习

这部分的内容来源于《Linux内核完全剖析》这里面主要牵涉的是内核中的东西,之所以花了很长时间来学习这方面的东西,是因为前一段在看和网络设备驱动相关的代码和资料的过程中,牵涉到了很多的内存相关的知识点,而对着方面的东西又不懂,搞的很头疼。而内存的分配和管理又是非常庞大和复杂的一块,所以痛下决心把这一块的知识好好学习一下,这样后面的学习过程也会变得比较容易。由于是自己打出来的,有些是按照自己理解写出

2013-08-12 11:16:21 966

原创 Linux设备驱动程序——PCI相关知识的学习

PCI相关的知识的学习一、首先了解一下PCI相关的一些基础知识:PCI总线的结构:PCI总线结构是一种层次型的体系结构,在这个结构体中PCI桥设备占据重要的地位。将父总线和子总线连接在一起,使得整个系统像一棵倒置的树。PCI桥主要包括以下几种:Host/PCI桥:用于连接CPU和PCI根总线,第一根的总线为0,内存控制器通常也集成到这个桥设备中。通常也被称为北桥芯片

2013-08-08 10:49:10 1043 1

原创 LInux设备驱动程序——module_init()和module_exit()

从五月份开始正式接触Linux设备驱动程序,到现在有2个多月了,其实真正算下来花费在这上面的时间有40天就不错吧,5月7日从家回来是真正的开始,回来之后花了大概有两周开始学习一些最基本的东西,这段时间也到了期末的时间,同时还要开各种会,很少能够真正的静下心来真正做些事情。到6月份开始准备图论和学位英语的考试,用了半个多月的时间,直到6月20号图论考试完才真正把全部精力投入到这上面。有时候真心感觉自

2013-07-24 22:02:55 1269 1

空空如也

空空如也

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

TA关注的人

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