自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Hash表

哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级。实际上,这只需要几条机器指令。  对哈希表的使用者一一人来说,这是一瞬间的事。哈希表运算得非常快,在计算机程序中,如果需要在一秒种内查找上千条记录通常使用哈希表(例如拼写检查器)哈希表的速度明显比树快,树

2014-03-30 21:42:20 665

原创 struct vm_struct和struct vm_area_struct

内存映射信息放在vma参数中,注意,这里的vma的数据类型是struct vm_area_struct,它表示的是一块连续的虚拟地址空间区域,在函数变量声明的地方,我们还看到有一个类似的结构体struct vm_struct,这个数据结构也是表示一块连续的虚拟地址空间区域,那么,这两者的区别是什么呢?在Linux中,struct vm_area_struct表示的虚拟地址是给进程使用的,而stru

2014-03-29 19:35:44 5071 3

转载 二叉查找树

二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树。没有键值相等的节点

2014-03-29 11:08:10 623

原创 task_struct结构

在linux中,线程、进程都使用struct task_struct来表示,它包含了大量描述进程/线程的信息,其中比较重要的有 pid_t pid;volatile long state;   /*进程状态*/。           int exit_state;         /*进程退出时的状态*/  等。         在linux中用current指针指向当前正在运行的进程

2014-03-28 22:35:50 657

原创 递归调用的确定

递归调用的确定是浪费堆栈。

2014-03-28 21:53:50 528

转载 浅谈C++多态性

C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。  多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphisn),字面意思多种形状。  C++多态性是通过虚函数来实现的,虚函数允许子类重新定

2014-03-14 22:21:34 427

转载 C++中友元类

还要注意,并不是友元函数能访问类中的所有成员,这样理解是错误的,正确的理解是,友元函数能通过类的对象访问类中的所有成员,友元函数是不能直接访问类中的私有成员的.

2014-03-13 22:52:50 504

转载 手把手教你用U盘安装Ubuntu

作为ubuntu的爱好者,第一次制作ubuntu安装教程,多有不足,还望包涵,呵呵~11.04因为还在测试阶段,我就不折腾了,就做个10.04的用U盘安装的教程吧。说到ubuntu,有接触linux的童鞋都应该听过,用wubi安装只是像在电脑上安装一个软件,可以轻松体验ubuntu,不过毕竟性能会打折扣,所以本人是比较喜欢直接安装在硬盘上的。这种方法只适合用desktop下进行安装,不能在

2014-02-16 11:19:52 601

转载 jlink烧写mini2440 nor flash

最近被mini2440搞得挺郁闷的,下载了官网上的u-boot不能用,还把板子上的supervivi搞得不能动了。参考了网上很多的步骤,总结如下:J-Link有一个功能很强大的Flash烧写工具叫J-Flash,但是对于S3C2440的NOR Flash操作有些麻烦:烧写NOR Flash时需要设置SDRAM,否则速率很慢.我已经搅好了J-Link的配置文件,可以使用SDRAM

2014-02-15 19:25:16 1300

转载 怎样看年报

有一种观点说看懂财报才是合格股民,这话应该加一个前题,那就是在一个规范的股票市场里。在目前中国极不规范的股票市场环境下,不识字看不懂报表的也可以当股民。但是,看不懂不一定代表就不看,所谓内行看门道外行看热闹,有些时候外行股民也要尽可能地了解上市公司的大概情况,这些情况虽然不是绝对理由,但一定是操作的重要依据。我说的外行是指没有会计等专业知识的股民,事实上中国百分之九十以上的股民是看不懂年报

2014-02-04 09:23:35 992

转载 关于相对布局RelativeLayout的各种属性介绍

RelativeLayout相对布局是个人觉得在android布局中比较常用且好用的一个,当然如果想让布局更漂亮是需要多种布局混合搭建的,这里就需要更深入的学习了,在这只介绍下有关相对布局的东西。相对于兄弟元素android:layout_below="@id/aaa":在指定View的下方android:layout_above="@id/xxx":在指定View的上方and

2014-01-27 16:09:16 519

转载 android初学——登陆界面及跳转设计

activity_main.xml[html] view plaincopyRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      and

2014-01-25 20:04:53 4060

转载 Android布局——Relative Layout

LinearLayout 是一个ViewGroup,将子View以一种相对位置的方式进行排列。View位置由与其兄弟View的相对位置(比如在一个View的左边或下面),或者与RelativeLayout区域的相对位置决定(比如与底部对齐)。在设计UI中,这个布局很重要,因为它可以减少ViewGroups内嵌,如果你发现用到很多LinearLayout布局时,可以考虑使用Relat

2014-01-25 19:45:53 1014

原创 android开发环境搭建——详解

今天开始学习android开发,总所周知,对于android开发的第一步便是android开发环境的搭建,今天亲手给搭建了一下。我首先简历了一个文件夹,文件名为android_base,这个文件夹用来存放搭建android环境的下载包。1.1、JDK安装如果你还没有JDK的话,可以去这http://www.oracle.com/technetwork/java/index.html下载

2014-01-22 23:37:57 1232 2

转载 设备文件自动创建2

驱动程序编写好后,还需要创建设备节点,有两种方式,一是通过mknod命令去手动创建,例如:mknod /dev/hello c 250 0,/dev/hello为设备节点名字,c代表字符设备,250和0代表它的主次设备号。二是使用udev或mdev来实现自动创建设备节点。使用mknod手动创建设备节点不够灵活,如果是动态分配的设备号怎么办,难道每次加载驱动后去查看/proc/devices文件中查

2014-01-19 16:43:38 685

转载 Linux 设备驱动 如何自动创建设备文件

设备文件是APP程序操作的对象,根据设备号匹配驱动程序,下面以简单的字符型设备驱动为例。 myclass = class_create(THIS_MODULE,"test_char"); /*在sys下创建类目录/sys/class/test_char*/ device_create(myclass, NULL, MKDEV(mem_major,0), NULL, "memdev0"); 

2014-01-19 15:22:44 1184

转载 linux进程状态及转换关系

linux中的进程状态:◆运行状态(TASK_RUNNING)指正在被CPU运行或者就绪的状态。这样的进程被成为runnning进程。运行态的进程可以分为3种情况:内核运行态、用户运行态、就绪态。◆可中断睡眠状态(TASK_INTERRUPTIBLE)处于等待状态中的进程,一旦被该进程等待的资源被释放,那么该进程就会进入运行状态。◆不可中断睡眠状态(TASK_U

2014-01-17 22:37:36 1057

转载 Linux内核中的常用宏container_of其实很简单

Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。    Container_of的定义如下: [cpp] view plaincopy#define container_of(ptr, type, member) 

2014-01-17 15:52:36 860

转载 对container_of(ptr,type,member)分析

原型为#define container_of(ptr, type, member) ({\    const typeof( ((type *)0)->member ) *__mptr = (ptr);\    (type *)( (char *)__mptr - offsetof(type,member) );}) 其中 ptr是指向正被使用的某类型变量指针;type是包含ptr指

2014-01-17 15:46:28 1037

原创 我对linux内核链表实现中的部分函数的理解——第二节

接下来是linux内核链表结点的删除在内核当中链表结点删除的函数是static inline void list_del(struct list_head *entry);我们来看一下它的实现:static inline void list_del(structlist_head *entry){       __list_del(entry->prev,entry->next

2014-01-17 15:27:57 971

原创 我对linux内核链表实现中的部分函数的理解——第一节

linux内核链表是一个双向循环链表,其实现与具体硬件平台无关,理解了linux内核链表的实现机制,我们能够把其移植到引用层程序设计当中。         linux内核链表相关的一些函数声明在include/linux/list.h中。首先是链表数据结构的定义struct list_head {          struct list_head *next, *prev;

2014-01-17 14:10:11 1010

转载 Linux用户空间与内核空间

Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。段

2014-01-16 21:41:50 607

转载 linux中GFP_KERNEL

GFP_KERNEL是在linux/gfp.h中定义的一个宏,是分配内核空间的内存时的一个标志位。这个标志位分配内存的一个选项,GFP_KERNEL是内核内存分配时最常用的,无内存可用时可引起休眠。以下是GFP_KERNEL在内核中的代码:#define GFP_ATOMIC (__GFP_HIGH)#define GFP_NOIO (__GFP_WAIT)#define GFP_

2014-01-16 18:20:44 9477 1

转载 kmalloc

Kmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零。Flags参数#includeVoid *kmalloc(size_t size, int flags);第一个参数是要分配的块的大小,第二个参数是分配标志(flags),他提供了多种kmalloc的行为。最常用的GFP_KERNEL,他表示内存分配(最终总是调用get_free_

2014-01-16 17:32:36 924

转载 字符设备驱动1

装载自:点击打开链接1.cdev 结构体Linux2.6内核使用 cdev 结构体描述字符设备struct cdev // cdev 的定义在 {    struct kobject kobj;   //内嵌的kobject    struct module *owner;   //所属模块    const struct file_operations *

2014-01-16 15:54:44 639

原创 MAJOR、MINOR、MKDEV理解

下面这段话出自linux内核linux/kdev.h中,是关于主次设备号操作的一些宏#ifndef _LINUX_KDEV_T_H#define _LINUX_KDEV_T_H#ifdef __KERNEL__#define MINORBITS 20#define MINORMASK ((1U #define MAJOR(dev) ((unsigned int) ((dev

2014-01-16 14:57:28 4490

转载 Linux内核模块导出后无法调用问题解决(模块间函数调用通讯)

Linux模块间通讯方法非常的多,最便捷的方法莫过于函数符号导出,然后直接调用。然而在linux2.6.26以后的内核中模块的符号导出经常会出现问题,一个模块中的导出符号不能被另外一个模块进行调用。这个使得处理有依赖关系的模块非常的头疼。 1. 符号导出函数EXPORT_SYMBOL() EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核

2014-01-16 12:46:35 952

转载 insmod: error inserting './igb.ko': -1 Unknown symbol in module 的问题所在

编译驱动的时候碰到了  insmod: error inserting './igb.ko': -1 Unknown symbol in module 的问题,在网上看了下,说是查看 dmesg | tail 看输出信息中的Unknown symbol,加载上这些模块就好。我的输出信息是:12345[ 3548.357465] igb

2014-01-16 12:04:29 1775

转载 word中文字与公式混排,如何使其对齐?

在写论文或文章时,有时候会遇到公式和文字不在一行的情况,公式老是比文字高出一截,怎么调都调试不下来,再网上搜索了下,终于找到了解决的办法。首先将有公式和文字的段落或是那一行全部选中。1)字体――字符间距――位置,标准;2)格式――段落――中文版式――对齐方式,居中。

2014-01-15 13:37:33 1993

转载 linux驱动头文件说明

#include 是在linux-2.6.29/include/linux下面寻找源文件。#include 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。#include 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。#include 在linux-2.6.31_TX2

2014-01-14 22:14:01 713

转载 goto语句和标号

分支、循环都讲完了,现在只剩下最后一种影响控制流程的语句了,就是goto语句,实现无条件跳转。我们知道break只能跳出最内层的循环,如果在一个嵌套循环中遇到某个错误条件需要立即跳出最外层循环做出错处理,就可以用goto语句,例如:for (...) for (...) { ... if (出现错误条件) goto error; }error: 出错处理;这里的err

2014-01-14 16:20:48 3315

转载 Makefile的obj-y 和 obj-m

目标定义是Kbuild Makefile的主要部分,也是核心部分。主要是定义了要编 译的文件,所有的选项,以及到哪些子目录去执行递归操作。 最简单的Kbuild makefile 只包含一行: 例子: obj-y += foo.o 该例子告诉Kbuild在这目录里,有一个名为foo.o的目标文件。foo.o将从foo.c 或foo.S文件编译得到。 如果foo.o要编译成一模块,那就要用obj-m

2014-01-14 14:01:23 2467

转载 gcc 中-I、 -L 与-l选项的作用

在makefile中经常会看到这些选项,简要说明其作用: -I后面紧跟着用户设定的编译器头文件查找路径如:    -I/my_include_path/-L后面紧跟着用户设定的编译器库文件查找路径如:     -L/my_lib_search_path/-l用来指明编译器要链接哪些库如:   gcc test.c -o test  -lmylibna

2014-01-14 00:35:31 2718

转载 makefile详解

最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。            于是google到了以下这篇文章。通俗易懂。然后把它贴出来,方便学习。           后记,看完发现这篇文章和《Linux环境下的C编程指南》的makefile一章所讲述的惊人的相似,只是这篇文章从一个实例切入,在有些地方比较好理解

2014-01-14 00:23:04 602

转载 Source Insight使用方法

Source Insight实质上是一个支持多种开发语言(java,c,c++等等)的编辑器,只不过由于其查找、定位、彩色显示等功能的强大,常被我们当成源代码阅读工具使用。一 常用快捷键1、按住"ctrl", 再用鼠标指向某个变量,点击一下,就能进入这个变量的定义。2、 "Alt + F12"可以让每个字符的宽度保持一致。勾选菜单栏的"view --> draft view"也

2014-01-13 18:27:01 1108

转载 进程上下文和中断上下文

进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬

2014-01-13 11:38:47 559

转载 Linux中断处理驱动程序编写

中断与定时器:中断的概念:指CPU在执行过程中,出现某些突发事件急待处理,CPU暂停执行当前程序,转去处理突发事件,处理完后CPU又返回原程序被中断的位置继续执行中断的分类:内部中断和外部中断内部中断:中断源来自CPU内部(软件中断指令、溢出、触发错误等)外部中断:中断源来自CPU外部,由外设提出请求屏蔽中断和不可屏蔽中断:可屏蔽中断:可以通过屏蔽字被屏蔽,屏蔽后,

2014-01-13 11:22:13 747

转载 总线设备驱动模型

文章的例子和实验使用《LDD3》所配的lddbus模块(稍作修改)。提示:在学习这部分内容是一定要分析所有介绍的源代码,知道他们与上一部分内容(kobject、kset、attribute等等)的关系,最好要分析一个实际的“flatform device”设备,不然会只学到表象,到后面会不知所云的。总线总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连

2014-01-13 11:12:12 660

转载 IO端口和IO内存的区别及分别使用的函数接口

IO端口和IO内存的区别及分别使用的函数接口          每个外设都是通过读写其寄存器来控制的。外设寄存器也称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。根据访问外设寄存器的不同方式,可以把CPU分成两大类。一类CPU(如M68K,Power PC等)把这些寄存器看作内存的一部分,寄存器参与内存统一编址,访问寄存器就通过访问一般的内存指令进行,所以,这种CPU没

2014-01-12 18:59:44 1242

转载 linux mmap 详解

一.前言mmap的具体实现以前在学习内核时学习过,但是对于其中的很多函数是一知半解的,有些只能根据其函数名来猜测其具体的功能,在本文中,一起来重新深入理解其具体的实现。二.mmap的用户层应用void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize); 具体参数含义start :

2014-01-12 17:30:58 621

空空如也

空空如也

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

TA关注的人

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