linux
文章平均质量分 77
liaoxinmeng
电子人生,低调做人
展开
-
miscdevice、platform_device、platform_driver的区别??大侠指教
最近研究Linux设备驱动程序遇到混乱,请大侠过来理理头绪。Linux设备模型中:bus_type、device、device_driver《Linux设备驱动程序》的linux设备模型章中说到设备模型中,所有设备都通过总线相连。添加设备devA,必须指定其device结构体的bus_type域,初始化其他域,然后调用device_register(&devA),将设备devA注册转载 2009-12-04 00:24:00 · 895 阅读 · 0 评论 -
shell 重定向问题分析
# File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 6 checking for... message转载 2010-04-12 20:00:00 · 1554 阅读 · 0 评论 -
本文教你如何使用autoconf、automake等来制作一个以源代码形式(.tar.gz)发布的软件、并可在执行configure时使用自定义参数。
本文教你如何使用autoconf、automake等来制作一个以源代码形式(.tar.gz)发布的软件、并可在执行configure时使用自定义参数。一、概述和基础知识 在Linux下得到一个以源代码形式发布的包(一般为.tar.gz或.tar.bz2格式),我们可以用 ./confiugure、make、make install来编译安装,其中在运行./configure的时候还可以转载 2010-04-09 17:34:00 · 4115 阅读 · 0 评论 -
给Autoconf增加调式选项-enable-debug
给Autoconf增加调式选项-enable-debug2008-01-30 10:32我们使用AC_ARG_ENABLE宏。AC_ARG_ENABLE (feature, help-string [, action-if-given [, action-if-not-given]])如果用户以选项`--enable-feature或者`--disable-featu转载 2010-04-09 17:34:00 · 5339 阅读 · 0 评论 -
例解 autoconf 和 automake 生成 Makefile 文件
例解 autoconf 和 automake 生成 Makefile 文件文档选项打印本页将此页作为电子邮件发送样例代码转载 2010-04-09 17:35:00 · 660 阅读 · 0 评论 -
s3c2440 存储系统和I/O空间 认识
用友善之臂的板子已经有一段时间了.对于存储系统和I/O空间的认识也渐渐淡忘了,原因是在做其他开发时,一直用着自带的启动代码,从不关心板子的储存空间配置.最近在做网卡驱动,突然间就不知道网卡的地址是什么了,于是花点时间总结一下.废话少说.开始吧.1,板上的存储资源两个32M的SDRAM.一个2M的NOR FLASH一个128M(有些是64M)的NAND FLASH以上这些资源看原转载 2010-05-19 00:38:00 · 3182 阅读 · 4 评论 -
真正明白C语言二级指针
<br /> 指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的“值,结果传递”等,对于二级指针或者多级指针,我想理解起来也是比较容易的,比如二级指针就是指向指针的指针.....n级指针就是....<br /> <br /> p *p **p<br /> --- --- ----<br />原创 2010-08-13 23:13:00 · 32713 阅读 · 7 评论 -
http协议select读取数据
最近在做http下载是发现两份差不多的代码对于select操作竟然得出了不同的结果,一个一直返回1,另一个一直阻塞知道超时。代码如下:该问题的模型是应用层想要下载一个XML文件,但是不知道文件的大小,所以在调用接口是就传递一个比较大参数如4096,但是实际这个XML的大小只有500个字节。两份代码在第一次调用select时都立即返回了,并且去读数据时都马上读到了500字节,但是原创 2011-11-22 22:53:49 · 2134 阅读 · 0 评论 -
详解link
本文转自:http://www.cppblog.com/shifan3/archive/2007/01/05/17325.html详解link有些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不转载 2012-02-10 00:07:50 · 1026 阅读 · 0 评论 -
Linux操作系统--动态链接库和代码段地址无关性(PIC)
注意:本文中的大部分是阅读 《程序员的自我修养》 作 者:俞甲子,石凡,潘爱民 的读书笔记。推荐大家看看这本书。 一,动态链接 操作系统将把程序依赖的目标文件全部加载到内存,如果依赖关系满足,则系统开始进行链接。链接与静态链接相似,即进行符号解析、地址重定位。 例如程序program1和program2都依赖于lib.o,而在运行program1的时候,lib.o转载 2012-03-11 19:07:45 · 3671 阅读 · 0 评论 -
内核层与用户层信号异步通知问题
内核层与用户层信号异步通知一定要用SIGIO信号吗 ?若是 步骤如下: 1 A device driver 检测GPIO A通过SIGIO通知用户层 2 B device driver 检测GPIO B也通过SIGIO通知用户层 3 用户进程C 先打开device A 注册信号SIGIO信号handle handle_A 然后进程C 再打开deviceB 注册信号SIGIO信号handle han转载 2010-03-05 15:45:00 · 1494 阅读 · 0 评论 -
与进程相关的文件结构
8.2.4 与进程相关的文件结构 在具体介绍这几个结构以前,我们需要解释一下文件描述符、打开的文件描述、系统打开文件表、用户打开文件表的概念以及它们的联系。1.文件对象在Linux中,进程是通过文件描述符(file descriptors,简称fd)而不是文件名来访问文件的,文件描述符实际上是一个整数。Linux中规定每个进程能最多能同时使用NR_OPEN个文件描述符,这个值转载 2010-03-05 11:26:00 · 1132 阅读 · 0 评论 -
异步通知
要弄明白这个问题,我们得从最基本的原理开始。我们知道,驱动程序运行在内核空间中,应用程序运行在用户空间中,两者是不能直接通信的。但在实际应用中,在设备已经准备好的时候,我们希望通知用户程序设备已经ok,用户程序可以读取了,这样应用程序就不需要一直查询该设备的状态,从而节约了资源,这就是异步通知。好,那下一个问题就来了,这个过程如何实现呢?简单,两方面的工作。一 驱动方面:1转载 2010-03-05 15:43:00 · 596 阅读 · 0 评论 -
逻辑地址、线性地址、物理地址和虚拟地址(转)
一、概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不是这样。所以,说它是转载 2009-12-06 01:44:00 · 633 阅读 · 0 评论 -
Linux内存管理图解(1)逻辑地址转线性地址
一、逻辑地址转线性地址 机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过 MMU(CPU 中的内存管理单元 ) 转换成物理地址才能够被访问到。 我们写个最简单的 hello world 程序,用 gccs 编译,再反编译后会看到以下指令: mov 0x80495b0, %eax 这里的内存地址 0x80495b0 就是一个逻辑地址,必须加上隐转载 2009-12-07 01:15:00 · 1371 阅读 · 1 评论 -
关于Linux的内存管理(上)
摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存地使用方法。力求从外自内、水到渠成地引导网友分析Linux地内存管理与使用。在本章最后我们给出一个内存映射地实例,帮助网友们理解内核内存管理与用户内存管理之间地关系,希望大家最终能驾驭Linux内存管理。 前言内存管理一向是所有操作系转载 2009-12-07 01:06:00 · 1023 阅读 · 0 评论 -
Linux内存管理图解(2)线性地址转物理地址
二、线性地址转物理地址前面说了Linux中逻辑地址等于线性地址,那么线性地址怎么对应到物理地址呢?这个大家都知道,那就是通过分页机制,具体的说,就是通过页表查找来对应物理地址。准确的说分页是CPU提供的一种机制,Linux只是根据这种机制的规则,利用它实现了内存管理。在保护模式下,控制寄存器CR0的最高位PG位控制着分页管理机制是否生效,如果PG=1,分页机制生效,需通过页表查找才能把转载 2009-12-07 01:17:00 · 1091 阅读 · 0 评论 -
linux 内存管理之kmalloc
在设备驱动程序中动态开辟内存,不是用malloc,而是kmalloc,或者用get_free_pages直接申请页。释放内存用的是kfree,或free_pages. 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部转载 2009-12-07 01:22:00 · 679 阅读 · 0 评论 -
[转]LINUX内存管理 - 高端内存的映射方式
高端内存是指物理地址大于 896M 的内存。对于这样的内存,无法在“内核直接映射空间”进行映射。为什么?因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。实际上,“内核直接映射空间”也达不到 1G, 还得留点线性空间给“内核动态映射空间” 呢。因此,Linux 规定“内核直接映射空间” 最多映射转载 2009-12-07 01:39:00 · 580 阅读 · 0 评论 -
Linux内核的等待队列(转载)
Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在Linux2.4.21中,等待队列在源代码树include/linux/wait.h中,这是一个通过list_head连接的典型双循环链表,如下图所示。 screen.width*0.7) {this.resized=true; this.width=screen.widt转载 2009-12-12 23:26:00 · 1744 阅读 · 0 评论 -
浅析linux2.6下VFS虚拟文件系统中的那3个玩意儿
文章来源:http://gliethttp.cublog.cn 超级块、目录项、索引节点和文件对象是VFS虚拟文件系统的4个最关键组成要素,一个inode索引节点唯一的对应一个目录文件夹或者文件,比如:/home/gliethttp/hello.c,我们想打开其中的hello.c文件,open("/home/gliethttp/hello.c",O_RDWR);硬盘上home文件夹唯一对应一转载 2009-12-16 16:41:00 · 1411 阅读 · 0 评论 -
浅析2.6.24下char字符驱动tty注册和实际调用流程
浅析2.6.24下char字符驱动tty注册和实际调用流程drivers/usb/class/cdc-acm.c->acm_init()->tty_register_driver(acm_tty_driver)->cdev_init(&driver->cdev, &tty_fops);这个tty_fops就是让cdev->ops 等于 tty_fops;(这里的tty_fops 是struct f转载 2009-12-16 17:35:00 · 1027 阅读 · 0 评论 -
[转载]项目svn版本控制中的分支策略
[原创]项目svn版本控制中的分支策略by AKara 2010-06-07 @ http://blog.csdn.net/akara @ akarachen(at)gmail.com @weibo.com/akaras 结合项目运营的一些体会,浅谈一下项目中经常用到的分支策略。 从一个很旧的PDF > 上发现了一些篇章,回头一读发现多年前精简的原则阐述放到现在转载 2012-09-02 11:22:21 · 1426 阅读 · 0 评论