- 博客(31)
- 资源 (22)
- 收藏
- 关注
原创 vim技巧专题
vimer网站推荐:1. http://www.vim.org2. http://www.vimer.cn/1.keyboard macro1.1>背景: 今天在网上看了一段关于linux链表的程序,觉得不错想在虚拟机上编译下,看看效果但是把程序拷贝到虚拟机中的Gvim中发现每行前面都有一个行号。 怎么去掉这个行号?
2012-08-30 11:38:34 701
转载 linux list的应用实例
/*此篇文章是介绍的一个linux list的一个应用实例*/ 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 MODULE_LICENSE("Dual BSD/GPL"); 9 //定义用户结构类型group10 struct group{11 int
2012-08-30 10:10:01 1666
转载 linux最具影响力的25个网站
下面是25个最具有影响力,也是最重要的Linux网站,这些网站提供了Linux的分发包,软件,文件,新闻,以及其它所有的关于Linux的东西。关于Linux的分发包历史,可以看看本站的这篇文章《Linux Distribution Timeline》1. Linux.org这个站点主要提供Linux相关的新闻、文档、教程,培训,以及其它一切和Linux相关的东西。这是你需要了解Linux开
2012-08-29 11:04:36 1909
转载 简明 Vim 练级攻略
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。——————————正文开始——————————你想以最快的速度学习人类史上最好
2012-08-29 10:25:54 791
原创 linux VFS
3. VFS请点评Linux支持各种各样的文件系统格式,如ext2、ext3、reiserfs、FAT、NTFS、iso9660等等,不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式,然而这些文件系统都可以mount到某个目录下,使我们看到一个统一的目录树,各种文件系统上的目录和文件我们用ls命令看起来是一样的,读写操作用起来也都是一样的,这是怎么做到的呢?Linux内核在各种不同
2012-08-28 14:03:51 1590
原创 put_user & get_user
1. put_userNameput_user -- Write a simple value into user space.Synopsisput_user ( x, ptr);Argumentsx Value to copy to user space. ptr Destination address, in user space.
2012-08-28 09:15:27 1013
转载 Linux内核部件分析<9> 设备驱动模型之device-driver
Linux内核部件分析设备驱动模型之device-driver前面我们分析了device、driver、bus三种类型,主要是三者的注册与注销,在sysfs中的目录与属性文件创建等内容。本节就来详细分析下,在设备注册到总线上时,总线是如何为其寻找对应的驱动的;在驱动注册到总线上时,总线又是如何为其寻找对应的设备的。本节的实现代码集中在drivers/base/bus.c和d
2012-08-27 17:41:34 1203
转载 Linux内核部件分析<8> 设备驱动模型之bus
前面我们分析了设备驱动模型中的device和driver,device和driver本来是不相关的东西,只因为bus的存在,才被联系到了一起。本节就来看看设备驱动模型中起枢纽作用的bus。本节的头文件在include/linux/device.h和drivers/base/base.h,实现代码主要在bus.c中。因为在bus中有很多代码时为了device找到driver或者driver找到dev
2012-08-27 17:40:11 809
转载 Linux内核部件分析<7> 设备驱动模型之driver
上节我们分析设备驱动模型中的device,主要是drivers/base/core.c,可以说是代码量最大的一个文件。本节要分析的驱动driver,就要相对简单很多。原因也很简单,对于driver,我们能定义的公共部分实在不多,能再sysfs中表达的也很少。本节的分析将围绕drivers/base/driver.c,但头文件仍然是include/linux/device.h和drivers/bas
2012-08-27 17:38:40 717
转载 Linux内核部件分析<6> 设备驱动模型之device
linux的设备驱动模型,是建立在sysfs和kobject之上的,由总线、设备、驱动、类所组成的关系结构。从本节开始,我们将对linux这一设备驱动模型进行深入分析。 头文件是include/linux/device.h,实现在drivers/base目录中。本节要分析的,是其中的设备,主要在core.c中。struct device { struct devi
2012-08-27 17:37:20 905
转载 Linux内核部件分析<5> 设备驱动模型的基石kobject
之前我们分析了引用计数kref,总结了sysfs提供的API,并翻译了介绍kobject原理及用法的文档。应该说准备工作做得足够多,kobject的实现怎么都可以看懂了,甚至只需要总结下API就行了。可我还是决定把kobject的实现代码从头分析一遍。一是因为kobject的代码很重要,会在设备驱动模型代码中无数次被用到,如果不熟悉的话可以说是举步维艰。二是为了熟悉linux的编码风格,为以后分析
2012-08-27 17:35:40 784
转载 Linux内核部件分析<4> 更强的链表klist
前面我们说到过list_head,这是linux中通用的链表形式,双向循环链表,功能强大,实现简单优雅。可如果您认为list_head就是链表的极致,应该在linux链表界一统天下,那可就错了。据我所知,linux内核代码中至少还有两种链表能占有一席之地。一种就是hlist,一种就是本节要介绍的klist。虽然三者不同,但hlist和klist都可以看成是从list_head中发展出来的,用于特殊
2012-08-27 17:34:23 758
转载 Linux内核部件分析<3> 记录生命周期的kref
kref是一个引用计数器,它被嵌套进其它的结构中,记录所嵌套结构的引用计数,并在计数清零时调用相应的清理函数。kref的原理和实现都非常简单,但要想用好却不容易,或者说kref被创建就是为了跟踪复杂情况下地结构引用销毁情况。所以这里先介绍kref的实现,再介绍其使用规则。kref的头文件在include/linux/kref.h,实现在lib/kref.c。闲话少说,上代码。str
2012-08-27 17:33:11 728
转载 Linux内核部件分析<2> 原子性操作atomic_t
在任何处理器平台下,都会有一些原子性操作,供操作系统使用,我们这里只讲x86下面的。在单处理器情况下,每条指令的执行都是原子性的,但在多处理器情况下,只有那些单独的读操作或写操作才是原子性的。为了弥补这一缺点,x86提供了附加的lock前缀,使带lock前缀的读修改写指令也能原子性执行。带lock前缀的指令在操作时会锁住总线,使自身的执行即使在多处理器间也是原子性执行的。xchg指令不带lock前
2012-08-27 17:32:00 898
转载 Linux内核部件分析<1>连通世界的list
/*此篇文章偏重于介绍linux中list相关的API, 偏重于原理*/在linux内核中,有一种通用的双向循环链表,构成了各种队列的基础。链表的结构定义和相关函数均在include/linux/list.h中,下面就来全面的介绍这一链表的各种API。struct list_head { struct list_head *next, *prev; };
2012-08-27 17:30:30 580
转载 **linux timer
说明:/****************** * linux内核的时间管理 ******************/(1)内核中的时间概念 时间管理在linux内核中占有非常重要的作用。相对于事件驱动而言,内核中有大量函数是基于时间驱动的。 有些函数是周期执行的,比如每10毫秒刷新一次屏幕;有些函数是推后一定时间执行的,比如内核在500毫秒后执行某项任务。 要区分:
2012-08-27 17:19:26 2359 1
原创 为驱动程序添加代码,实现自动生成/dev/下节点
下面代码模板是使用的宋宝华老师的代码,希望他不要生气,本为只是为了共享一些学习经验!!/*====================================================================== A "seond" device driver as an example of kernel timer The initia
2012-08-27 14:41:35 1438
转载 mknod 命令
mknod 命令 2009-09-06 17:56:32| 分类:linux指令 |字号 订阅Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录 下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每 个设备号又分为主设备号和次设备
2012-08-27 13:54:47 1061
转载 udev原理
udev 2012-04-03 19:29:58| 分类:Linux |字号 订阅第一、什么是udev? 这篇文章UDEV Primer给我们娓娓道来,花点时间预习一下是值得的。当然,不知道udev是什么也没关系, 把它当个助记符好了,有了下面的上路指南,可以节省很多时间。我们只需要树立一个信念:udev很简单!嵌入式的udev应用尤其简单。
2012-08-27 11:03:14 2004
转载 在驱动模块初始化函数中实现设备节点的自动创建
在驱动模块初始化函数中实现设备节点的自动创建作者:杨硕,华清远见嵌入式学院讲师。我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。内核中定义了struct class结构
2012-08-23 16:29:27 583
转载 linux守护进程
Some basic rules to coding a daemon prevent unwanted interactions from happening. We state these rules and then show a function,daemonize, that implements them.编写一个没有交互功能的守护进程是有一定的步骤的。我们列出相关的步骤,并且
2012-08-22 15:17:35 703
转载 Linux驱动学习
Linux驱动学习(一)注:基于linux-2.6.38 在linux源码的根目录下有一个叫drivers的目录,可以发现linux源码根目录下也就那么十来二十个目录,linux把drivers作为根目录下的一个独立的目录,足见drivers在linux里占有的分量有多重。 打开drivers目录一看,有一种晕呼呼的感觉,好几十个目录就这样“活生生”地摆在眼前
2012-08-21 16:01:55 951
原创 《linux设备驱动开发详解》学习之globalmem
1.代码:#include #include #include #include #include //#include #include #include #include #include #include #include #include #define GLOBALMEM_SIZE 0x1000 /*4KB*/#de
2012-08-20 18:01:12 1198
转载 再谈“我是怎么招聘程序员的” ---很不错的一篇文章
我以前写过一篇“我是怎么招聘程序员的”的文章(在CSDN那里有很多人进行了回复)。今天,我想再谈谈关于招聘和面试这方面的东西,主要是以下这些原因:近半年来我在进行了大量的招聘工作,对面试有一些新的体会。 酷壳最近发布了几篇趣味面试题(面试题一,面试题二,面试题三),从回复中让我有一些思考。我有一个同事最近面试了一家公司,他和我分享了一个博士专家对他的面试,也让我思考了一些。 在豆瓣上看
2012-08-17 17:37:23 1460 1
转载 阻塞与非阻塞I/O
阻塞与非阻塞I/O还记得上篇 我们讲到的是linux中并发控制访问的手段有哪些????原子、信号量、自旋锁、互斥体。这是为了保护临界区的资源,是多个进程对共享资源的并发访问的一种处理手段。但是,在驱动程序中,我们常常为了支持用户空间对设备的灵活访问,引入了阻塞与非阻塞I/O两种不同模式。 阻塞操作是指在执行设备操作时若不能获得资源则挂起进程,直到满足可操作的条件后再进行操作。因为
2012-08-17 15:34:03 1333
转载 什么是 "asmlinkage"?
什么是 "asmlinkage"?相信大家在看linux的source code的时候,都会注意到asmlinkage这个宏,它是用来做什么的呢?The asmlinkage tag is one other thing that we should observe about this simple function. This is a #define for some gcc m
2012-08-17 13:30:43 465
转载 内核编程中的EXPORT_SYMBOL
EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用 。 您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内核后的测试。Linux symbol export method:[1] If we want export the sy
2012-08-17 13:29:59 949
原创 浅析linux printk的实现
printk函数是我们调试linux内核必备的打印接口,printk定义在/kernel/路径下声明在/linux/kernel.h中,如果在某个文件中使用printk时编译通不过,通常都是未包含这个头文件(当然还有语法错误,呵呵~)/** * printk - print a kernel message * @fmt: format string *
2012-08-17 12:16:40 2704
原创 C语言中死循环的三种写法
C语言中死循环的三种写法1.while(1){ ;}2.for(; ;){ ;}3LOOP:......goto LOOP;第一种写法明显比第二种写法的效率要高,第三种常用在嵌入式编程中
2012-08-01 17:20:11 25524
转载 FTP 命令详解
FTP> ! 从 ftp 子系统退出到外壳。 FTP> ? 显示 ftp 命令说明。? 与 help 相同。 格式:? [command] 说明:[command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。 FTP> append 使用当前文件类型设置将本地文件附加到远程计算机上的文件。 格式:appe
2012-08-01 15:56:28 932
EasyBCD系统引导修复工具v2.2.0+汉化特别版
2013-01-18
英文版 The C++ Programming Language Special 3rd Edition
2011-03-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人