Android HAL Notes

Android HAL

Android Hal 是用来隔离linux内核和Android用户空间的一个中间库,它主要是为了让一些硬件厂商不用根据linux内核的gpl协议放出全部的linux驱动代码。有了hal硬件厂商就可以只在内核驱动中实现基本的操作而把硬件操作的逻辑移到hal层来实现,hal层是apache协议的,所以厂商可以只提供二进制库。

Posted by vmlinz Tue, 26 Apr 2011 11:18:40 +0800


linux 设备驱动模型笔记

Linux device driver model

overview

linux 设备模型的目的是为内核构建统一的模型,从而使系统有一般性的描述。

设备模型的几个主要任务:

  • 电源管理和系统关机:设备模型使得操作系统能够以正确的顺序遍历关闭系统硬件
  • 和用户空间进行通讯:sysfs虚拟文件系统的实现和设备模型密切相关,并向用户空间展现了系统的结构
  • 设备模型:维护设备驱动的体系化数据机构
  • 对象的生命周期:设备模型的创建需要一系列的机制来处理对象的生命周期、对象之间的关系以及这些对象在用户空间的表示

Posted by vmlinz Sun, 17 Apr 2011 18:11:09 +0800


块设备驱动要点

块设备驱动

块设备驱动比字符设备驱动要复杂许多,它在I/O操作上表现出极大的不同,缓冲,I/O调度和<
请求队列等是块设备驱动的主要概念。

块设备I/O的主要操作特点:

  • 块设备只能以块为单位进行I/O,字符设备则以字节为单位。大多数设备是字符设备,因为它
    们不需要缓冲而且不以固定块大小进行操作。
  • 块设备对于I/O请求有对应的缓冲,因此它们可以选择以什么顺序进行响应,字符设备无需缓
    冲且被直接读写。对于存储设备而言调整读写顺序的作用巨大,因为读写连续的山区比
    分离的扇区更快。
  • 字符设备只能顺序读写,而块设备可以随机访问。虽然块设备可以随机访问,但是对于磁盘
    这类机械设备而言,顺序的组织设备的访问可以提高性能。注意,对SD卡和RAMDISK等块
    设备而言,不春在机械上的原因,所以没有必要这样调整。

Posted by vmlinz Fri, 08 Apr 2011 00:30:17 +0800


使用thinkfan控制thinkpad风扇

使用thinkfan智能控制thinkpad风扇速度

我的thinkpad在安装了ubuntu 10.04之后,cpu风扇一直是满速运转,风扇声音非常烦人,而
且长时间这样运转可能会把cpu风扇给搞坏了。于是开始在网上找控制thinkpad风扇的方
法。这里就简单记录一下使用thinkfan来控制cpu风扇的过程。

Posted by vmlinz Mon, 04 Apr 2011 13:31:17 +0800


Linux内核中的并发和同步

作者: Nick Qi

0.简介

Linux内核中并发处理、抢占调度的支持以及中断的处理都需要处理竞争条件和同步问题,
下面我将通过《Linux设备驱动程序》以及相关文档中的内核同步机制以及使用方法做一
个总结。

竞争条件是指代码段的实际效果依赖于代码段的执行顺序。包含可能产生竞争条件的代码
被叫做临界区。在Linux内核添加了SMP支持之后,竞争条件和临界区就成了内核设计和
实现主要关注的问题之一。

Posted by vmlinz Tue, 25 Jan 2011 23:57:01 +0800


GNU Emacs的终极扩展管理工具 -- el-get

今天, 你el-get了吗?

通常我们在配置GNU Emacs的时候,都会安装一些第三方的lisp扩展来让GNU Emacs用起来
更顺手,但是这些第三方lisp扩展的安装、升级和配置的方法各异,通常我们需要使用多种
完全不同管理方式的lisp扩展(http直接下载,发行版包管理器下载,版本控制器下载
等)。这样我们升级或者迁移的时候就可能会遇到各种麻烦。

GNU Emacs一直以来都缺少一个统一的第三方lisp扩展管理器,GNU XEmacs与GNU Emacs的
一个区别就是它有一个统一的第三方包管理工具。这其中的原因主要是因为GNU Emacs是
GNU Project的一个重要代表,它要求随它发行的所有lisp都要作者签名用GPL授权给FSF,
但是并不是所有的作者都支持GPL,而且这个过程给第三方贡献增加了不少阻碍。所以当时
就有一批开发者开发了GNU XEmacs。所以GNU Emacs一直到现在也没有引入官方的扩展管理
工具(指的是当前的稳定版本,ELPA已经被合并到当前的开发分支了)。

Posted by vmlinz Fri, 14 Jan 2011 13:20:51 +0800


轻量级Emacs--JED介绍

轻量级Emacs--JED

JED介绍

JED是一个轻量级的Emacs实现,它是JohnE.Davis在1992年发起的一个编辑器项目。
这个编辑器现在仍然在活跃的开发中,主要开发者仍然是最初的作者。 PS:他最近也
使用git来管理这个项目了。

JED通过S-lang(作者自己写的一个语法类似于c语言的解释器)来扩展,它的设计
结构和GNU Emacs是基本一致的(核心+解释器+扩展)。但是它非常的轻量级,同
时具有命令行界面和x界面。

Posted by vmlinz Wed, 12 Jan 2011 09:24:16 +0800