
linux kernel
文章平均质量分 60
alex_xhl
专注软件架构设计,性能分析和优化。
展开
-
查找指定文件中特定字符串赋值
#include #include #include #include #include #include #include #include static unsigned long get_file_size(const char *path){ struct stat statbuff; if(stat(path, &statb原创 2012-12-06 16:42:56 · 650 阅读 · 0 评论 -
关于mount nfs时-o nolock的问题
需要将在linux里交叉编译好的程序放在arm上运行,所以首先要将程序copy至arm上,选择了nfs。 但在arm上mount nfs的时候遇到了失败的情况: 在网上查找解决方案: nfs mount 默认选项包括文件锁,依赖于portmap提供的动态端口分配功能。 解决方法:kill 文件锁(lockd)或者mount -转载 2012-01-31 17:04:30 · 23818 阅读 · 5 评论 -
linux sd卡驱动分析,基于mini2440,sdio mmc sd卡驱动编写
参考资料: 1.SD Memory Card Specifications / Part 1. Physical Layer Specification; Version 1.0 2.LDD3 CHAPTER-16 BLOCK DEVICE3. http://www.sdcard.org引言:前几天把mini2440 的sd 卡驱动程序移植到了Android 平转载 2010-06-25 19:22:00 · 203 阅读 · 0 评论 -
sd卡驱动在linux 2.6.24上的实现简易心得 及 好的url地址
整理sd卡驱动在linux 2.6.24上的实现简易心得1.mmc_rescan 当GPIO8发生sd卡插入动作后,进入pxamci_detect_irq()中断,进而触发mmc_rescan检卡work queue工作队列2.对于sdio设备 host->bus_ops = mmc_sdio_ops; 对于sd设备 host->bus_ops = mmc_sd转载 2010-06-25 19:30:00 · 1375 阅读 · 0 评论 -
基于S3C2410的SD卡linux驱动工作原理 http://blog.youkuaiyun.com/funy_liu/archive/2009/11/03/4764206.aspx 流程图
首先介绍下Linux驱动模型的几个概念:§1 bus系统中总线由struct bus_type描述,定义为:struct bus_type {char * name; 总线类型的名称struct subsystem subsys; 与该总线相关的subsystemstruct kset drivers; 所有与该总线相关的驱动程序集合struct kset device转载 2010-06-25 19:33:00 · 1374 阅读 · 0 评论 -
看看
http://hi.baidu.com/lincoln%5Flai/blog/category/Ldd原创 2010-07-06 14:30:00 · 691 阅读 · 0 评论 -
内核中的Makefile和Kconfig
一、概述 在内核编译中如何将各个目录树中的文件组织起来编译是一个很重要的问题,并且要根据用户配置来编译特有的内核。为了解决这个问题,内核使用两种文件,Makefie和Kconfig。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文档相关的内核配置菜单,就是我们使用命令 make menuconfig(或者xconfig)后产生的配置转载 2010-07-07 16:15:00 · 736 阅读 · 0 评论 -
Linux Kernel Module编程,多个源文件编译成一个模块的解决方案
陆陆续续也写了几个Linux内核模块了,但每次都是把代码写在一个源文件中,上次尝试了写在两个.c文件中,结果没有编译通过。无奈之下,将其中一个.c文件重命名成.h文件,再include当另一个当中。但是,在.h文件中写函数的实现总感觉怪怪的。今天查看了以下Kbuild的文档,有如下描述: If a kernel module is built from several sourc转载 2010-07-07 17:50:00 · 4411 阅读 · 2 评论 -
写给Linux内核新手-关于Linux内核学习的误区
关于Linux内核学习的误区 先说句正经的:其实我没资格写这篇文章,因为自己也就一两个月以来才开始有所领悟的。因此,这里与其说是关于Linux内核学习的经验,不如说是自己的教训吧,希望不要扔鸡蛋砸我^_^ 常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux。 这个……还是有点太泛了吧,我想下面几个基础可能还是需要的转载 2010-08-10 11:30:00 · 728 阅读 · 0 评论 -
打印调试技术 printk klogd dmesg
4.2.1. printk#include printk(KERN_CRIT"error %s,%i",__FILE__,__LINE__);注:1). printk函数中能够指定优先级,假如printk没有指定优先级,采用默认优先级,DEFAULT_MESSAGE_LEVEL,其值在kernel/printk.c. 头文档linux/printk.h中宏定义了8个级转载 2010-09-03 13:40:00 · 1037 阅读 · 0 评论 -
不错的网址
http://blog.chinaunix.net/u/19573/article.php?frmid=0&page=14原创 2010-09-03 13:43:00 · 1236 阅读 · 0 评论 -
使用netlink机制在内核进程和用户空间进程通信
内核模块代码:netlink_drv.c#include #include #include #include #include #include #define NETLINK_TEST 21struct sock *nl_sk = NULL;EXPORT_SYMBOL_GPL(nl_sk);void nl_da原创 2012-02-05 10:23:22 · 1945 阅读 · 0 评论 -
linux中Framebuffer的原理及实现机制
linux中Framebuffer的原理及实现机制*一、FrameBuffer的原理* FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出 FrameBuffer这 个设备来供用户态进程实现直接写屏转载 2012-02-06 17:42:57 · 763 阅读 · 0 评论 -
使用 /proc 文件系统来访问 Linux 内核的内容
这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口简介: /proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux® 内核空间和用户空间之间进行通信。在 /proc 文件系统中,我们可以将对虚拟文件的读写作为与内核中实体进行通信的一种手段,但是与普通文件不同的是,这些虚拟文件的内容都是动态创建的。本文对 /proc 虚拟文件系统进行了介绍,并展示了它转载 2012-02-06 17:37:03 · 732 阅读 · 0 评论 -
Linux 3.6:更优秀的虚拟化平台
摘要:这一版本的更新包括Btrfs新特性;挂起到磁盘和内存;TCP "Fast Open"模式;"TCP small queues"来解决bufferbloat问题;NFS/NBD安全交换;更好的ext4配额支持;支持PCIe D3cold电源状态;支持VFIO,并可以保证guest driver对裸主机设备的安全访问。Linux 3.6的重大改进包括:1. Btr转载 2012-10-14 13:55:34 · 930 阅读 · 0 评论 -
Linux网络编程必看书籍推荐
首先要说讲述TCP/IP的书很多,其中有3泰书很全。分别是《TCP/IP详解》三卷本,《用TCP/IP进行网际互连》三卷本,《TCP/IP指南》+《IPv6》四卷本其中TCP/IP详解的作者还写了另外2本经典著作,《Unix环境高级编程》,《Unix网络编程》作者W.Richard Stevens个人网站 http://www.kohala.com/大师作品部部经转载 2012-10-14 13:54:33 · 960 阅读 · 0 评论 -
Linux下的C编程实战(开发平台搭建,文件系统编程,进程控制与进程通信编程,“线程”控制与“线程”通信编程,驱动程序设计,专家问答)
Linux下的C编程实战(一)――开发平台搭建1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性。而近年来,Linux操作系统在嵌入式系统领域的延伸也可谓是如日中天,许多版本的嵌入式Linux系统被开发出来,如ucLinux、RTLinux、ARM-Linux等等。在嵌入式操作系统方面,Linux的转载 2012-10-12 11:12:18 · 3603 阅读 · 0 评论 -
ALSA driver 参考code
alsa-driver-1.0.23\alsa-driver-1.0.23\arm\sa11xx-uda1341.c原创 2012-03-08 10:46:20 · 866 阅读 · 0 评论 -
研读 <<mips体系结构透视 >>
>原创 2012-03-06 18:12:22 · 930 阅读 · 0 评论 -
asmlinkage
说明这是系统调用它是GCC对C程序的一种扩展, #define asmlinkage __attribute__((regparm(0)))表示用0个寄存器传递函数参数,这样,所有的函数参数强迫从栈中提取。这个asmlinkage大都用在系统调用中,系统调用需要在entry.s文件中用汇编语言调用,所以必须要保证它符合C语言的参数传递规则,才能用汇编语言正确调用它。这也是为何使用a转载 2012-03-06 18:10:55 · 698 阅读 · 0 评论 -
linux 内核空间和用户空间
Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G。Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为"内核空间"。而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为"用户空间)。因为每个进程可以通过系统调用进入内核,因转载 2012-03-01 09:45:36 · 690 阅读 · 0 评论 -
嵌入式操作系统内核原理和开发(开篇)
操作系统是很多人每天必须打交道的东西,因为在你打开电脑的一刹那,随着bios自检结束,你的windows系统已经开始运行了。如果问大家操作系统是什么?可能有的人会说操作系统就是windows,就是那些可以放大、缩小、移动的窗口。对曾经是计算机专业的朋友来说,这个答案还要稍微复杂一些,操作系统可能还有linux、unix、ios、sun solaris、aix等。如果再细化一点,对嵌入式工具比较解的转载 2012-02-17 11:56:36 · 720 阅读 · 0 评论 -
kfifo 源码剖析
从2.6.10开始,Linux内核提供了一个通用的环形缓存(我喜欢称为环形队列);它的头文件是,kfifo.c是实现代码。 在设备驱动中环形缓存出现相当多. 网络适配器, 特别地, 常常使用环形缓存来与处理器交换数据(报文)[LDD3]。 见下面的图“LDD3中描述的队列”。我们来看下kfifo的数据结构:struct kfifo { unsigned char *buffer转载 2012-02-23 17:42:13 · 949 阅读 · 0 评论 -
Linux IPC(InterProcess Communication) 进程通信
今天抽空把Linux IPC (InterProcess Communication)总结一下.在开发大型应用程序时,避免不了要使用到多个进程协作完成任务.在Linux中进程间通信主要有如下几种方式. 下文中将简单介绍这几种通信机制及其使用的范围.按照一些书上的描述,一般分为2类: 基于文件系统 和 基于内核. 但我个人觉得, 可以分为3类: 和文件系统及内核无关, 基于文件系统, 基于内原创 2012-02-15 09:27:24 · 950 阅读 · 0 评论 -
如何编写Linux设备驱动程序
Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别。在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便。本人这几周来为实验室自行研制的一块多媒体卡编制了驱动程序,获得了一些经验,愿与L转载 2010-09-06 18:05:00 · 596 阅读 · 0 评论 -
hello: module license 'unspecified' taints kernel.
测试驱动开发平台为了后续学习的顺利进行,我们利用最简单的hello,world程序,在内核上挂载和卸载我们自己编写的hello模块。说明:本文调试环境VMware Workstation 5.0+TurboLinux 10,教材是《Linux Device Drivers》第3版英文电子图书。一、编写hello.c文件利用vi编辑器,我们键入下面的代码,并保存为hello.c文件。转载 2010-09-10 09:33:00 · 5597 阅读 · 0 评论 -
在kernel中编译单独的.ko
~/kernel-x-x-xx$ make modules SUBIDR=./drivers/mydriver/ [转]参考资料:单独编译ntfs.ko模块,使你的CentOS完全支持ntfs参考:http://hi.baidu.com/zngell/blog/item/f70702f427dbdf67ddc47457.htmlhttp://li原创 2010-09-14 15:25:00 · 3075 阅读 · 0 评论 -
linux内核学习
常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux。 这个……还是有点太泛了吧,我想下面几个基础可能还是需要的,尽管不一定必需: 1, 关于操作系统理论的最初级的知识。不需要通读并理解《操作系统概念》《现代操作系统》等巨著,但总要知道分时(time-shared)和实时(real-time)的区别是什么,进程是个什么东西,CPU和系统总转载 2010-12-13 22:17:00 · 890 阅读 · 0 评论 -
解读和分析Linux核心源码的两种方法
Linux的最大的好处之一就是它的源码公开。同时,公开的核心源码也吸引着无数的电脑爱好者和程序员;他们把解读和分析Linux的核心源码作为自己的最大兴趣,把修改Linux源码和改造Linux系统作为自己对计算机技术追求的最大目标。Linux内核源码是很具吸引力的,特别是当你弄懂了一个分析了好久都没搞懂的问题;或者是被你修改过了的内核,顺利通过编译,一切运行正常的时候。那种成就感真是油然而生转载 2012-01-30 08:53:57 · 589 阅读 · 0 评论 -
linux内核编译之旅
内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。 Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。 Linux的一个重要的特点就是其源代码的转载 2010-06-11 19:34:00 · 645 阅读 · 0 评论 -
Framebuffer Driver
中文名为:帧缓冲驱动 一、FrameBuffer的原理 FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽转载 2010-06-13 18:42:00 · 717 阅读 · 0 评论 -
不错的网站
红联linux: http://www.linuxdiyf.com/bbs/编程与内核: http://www.linuxdiyf.com/bbs/forum-9-1.html海明老师Linux版视频收集贴:http://www.boobooke.com/bbs/viewthread.php?tid=4623原创 2010-06-13 19:36:00 · 550 阅读 · 0 评论 -
Modifying Shared Memory
http://www.extremetech.com/article2/0,2845,2114123,00.asp原创 2010-06-25 16:03:00 · 563 阅读 · 0 评论 -
嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(一)
http://blog.ednchina.com/mcuandme/1787530/Message.aspx http://blog.chinaunix.net/u3/101649/showart_2232724.html嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。转载 2010-07-01 13:43:00 · 3037 阅读 · 1 评论 -
linux device driver .ko module Makefile 模板
## Makefile module first.ko#CROSS_PATH:=../../mips-4.3/binCROSS_ARCH:=ARCH=mips CROSS_COMPILE=$(CROSS_PATH)/mips-linux-gnu-DEVICE=firstifneq ($(KERNELRELEASE),) obj-m:=$(DEVICE).o $(DE原创 2010-09-08 10:08:00 · 1526 阅读 · 0 评论 -
linux 设备驱动开发详解 code (4)
1.c code: #include #include #include #include #include #include #include #include #include #include #include #define GLOBALMEM_SIZE 0x1000#define MEM_CLEAR 0x01#原创 2010-12-09 22:43:00 · 856 阅读 · 0 评论 -
linux 模块层叠技术和多个ko的编译
驱动程序中lsmod命令实际读取的是/proc/modules文件即与lsmod命令对应的结果是cat /proc/modules内核中已经加载的模块的信息存在于/sys/module目录下modprobe命令比insmod命令要强大,它在加载某模块时会同时加载该模块所依赖的其他模块使用modprobe -r filename的方式卸载将同时其依赖的模块modinfo转载 2010-12-13 22:01:00 · 2444 阅读 · 0 评论 -
linux内核符号表
内核符号:存在内核空间函数或变量所对应的符号 内核符号表可以分为“私有”和“公共”。平常所说的内核符号表指的是“公共内核符号表”。 我们知道,驱动存在于内核空间,它的每一个函数每一个变量都会有对应的符号,这部分符号也可以称作内核符号,它们不导出的话就只能为自身所用,导出后就可以成为公用,对于导出的那部分的内核符号就是我们常说的内核符号表。in转载 2010-12-13 21:56:00 · 1864 阅读 · 0 评论 -
linux 设备驱动开发详解 code (5)
1.c code: #include #include MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "hello world enter/n"); return 0;}static void hello_exit(void)原创 2010-12-09 22:44:00 · 580 阅读 · 0 评论 -
linux 设备驱动开发详解 code (2)
1.c code: #include #include #include #include #include #include #include #include #include #include #include #define GLOBALMEM_SIZE 0x1000#define MEM_CLEAR 0x01#原创 2010-12-09 22:38:00 · 722 阅读 · 0 评论