Linux设备 (转)
5.3.2 设备类型分类
纵览linux/drivers目录,大概还有35个以上的子目录,每个子目录基本上就代表了一种设备驱动,有atm、block、char、misc、input、net、usb、sound、video等。这里只描述在嵌入式系统里面用得最为广泛的3种设备。
1.字符设备(char device)
字符设备是Linux最简单的设备,可以像文件一样访问。初始化字符设备时,它的设备驱动程序向Linux登记,并在字符设备向量表中增加一个device_struct数据结构条目,这个设备的主设备标识符用做这个向量表的索引。一个设备的主设备标识符是固定的。chrdevs向量表中的每一个条目,一个device_struct数据结构,包括两个元素:一个登记设备驱动程序名称的指针和一个指向一组文件操作的指针。可以参考的代码是include/linux/ major.h。
一般来说像鼠标、串口、键盘等设备都属于字符设备。
2.块设备(block device)
块设备是文件系统的物质基础,它也可以像文件一样被访问。Linux用blkdevs向量表维护已经登记的块设备文件。它像chrdevs向量表一样,使用设备的主设备号作为索引。它的条目也是device_struct数据结构。与字符设备不同的是,块设备分为SCSI类和IDE类。向Linux内核登记并向核心提供文件操作。一种块设备类的设备驱动程序向这种类提供和类相关的接口。可以参考的代码是fs/devices.c。
每一个块设备驱动程序必须提供普通的文件操作接口和对于buffer cache的接口。每一个块设备驱动程序填充blk_dev向量表中的blk_dev_struct数据结构。此向量表的索引是设备的主设备号。其中blk_dev_struct数据结构包括一个请求例程的地址和一个指针,指向一个request数据结构的列表,每一个都表达buffer cache向设备读/写一块数据的一个请求。
可以参考的源代码是drivers/block/ll_rw_blk.c和include/linux/blkdev.h。
当buffer cache从一个已登记的设备读/写一块数据,或者希望读、写一块数据到其他位置时,就在blk_dev_struct中增加一个request数据结构。每个request数据结构都有一个指向一个或多个buffer_head数据结构的指针,每一个都是读/写一块数据的请求。如果buffer_head数据结构被锁定(buffer_cache),可能会有一个进程在等待这个缓冲区的阻塞进程完成。每一个request数据结构都是从all_request表中分配的。如果request增加到空的request列表中,就调用驱动程序的request函数处理这个request队列,否则驱动程序只是简单地处理request队列中的每一个请求。
块设备驱动程序和字符
相关文档:
MYSQL安装
//解压编译安装
# tar xzvf mysql-5.0.27.tar.gz
# cd mysql-5.0.27
# ./configure -prefix=/home/redadmin/mysql
# make
# make install
# cd /home/redadmin/mysql/
# cp share/mysql/my-medium.cnf ./
# mv my-medium.cnf my.cnf
// my.conf文件修改
# vi my.cnf
修改前:
port &nb ......
from: http://cc.byexamples.com/20070520/tap-the-interrupt-signal/
When you hit control+c, you are actually send a SIGINT ( Interrupt signal ) to your program. By default, your program will be terminated after receiving SIGINT. But you can change the way of handling Interrupt signal.
Some of the a ......
Linux patch的用法
http://hi.baidu.com/issaria/blog/item/b04527ec816967d72f2e2184.html
2008-08-14 14:50
也许只是我一个人比较笨,每次碰到bug,虽然有人给出补丁(patch),但是却不知道怎么使用。Manual Page ( man patch )也只给出 patch -p(num) <patchfile这样的用法,具体也不知道怎样确定num,如果你也有 ......
本文档测试环境:
1)Linux操作系统版本:
Red Hat Enterprise Linux Server release 5
2.6.18-8.el5
2)jdk版本
1.5.0_16
Linux下连Java连sap步骤
1)下载sapjco.jar
  ......
1. vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=example.com
GATEWAY=192.168.0.1
NDS1=219.150.32.132 // dns 服务器地址
2. vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:15:E9:B1:32:AF
BOOTPROTO=static
IPADDR=192.168.0.188
NETMASK=255. ......