易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux设备驱动程序学习(1) 字符设备驱动程序


Linux设备驱动程序学习(1)
-字符设备驱动程序
今天进入
《Linux设备驱动程序(第3版)》第三章字符设备驱动程序的学习。
这一章主要通过介绍字符设备
scull(Simple Character Utility for Loading Localities,区域装载的简单字符工具)的
驱动程序编写,来学习Linux设备驱动的基
本知识。scull可以为真正的设备驱动程序提供样板。
一、主设备号和此设备号
主设备号表示设备对应的驱动程序;次设备号由内核使用,用于正确确定
设备文件所指的设备。
内核用dev_t类型(<linux/types.h>
)来保存设备编号,dev_t是一个32位的数,12位表示主设备号,20为表
示次设备号。
在实际使用中,是通过<linux/kdev_t.h>

定义的宏来转换格式。
 (dev_t)-->主设备号、次设备号
 MAJOR(dev_t dev)
 MINOR(dev_t dev)
 主设备号、次设备号-->(dev_t)
 MKDEV(int major,int minor) 
建立一个字符设备之前,驱动程序首先要做的事情就是获得设备编号。其这主要函数在<linux/fs.h>
中声明:
int

register_chrdev_region(
dev_t
first,
unsigned
int
count
,
char
*
name)
;  
//指定设备编号
int

alloc_chrdev_region(
dev_t *
dev,
unsigned
int
firstminor,
unsigned
int
count
,
char
*
name)
;   //动态生成设备编号
void
unregister_chrdev_region(
dev_t first,
unsigned
int
count
)
;      //释放设备编号
分配之设备号的最佳方式是:默认采用动态分配,同时保留在加载甚至是编译时指定主设备号的余地。
以下是在scull.c中用来获取主设备好的代码:
if
(
scull_major)
{
   
dev =
MKDEV(
scull_major,
scull_minor)
;
   
result =

register_chrdev_region(
dev,
scull_nr_devs,
"scull"
)
;
}
else
{
    result =
alloc_chrdev_region(
&
dev,

scull_minor,
scull_nr_devs,
"scull"
);
    scull_major = MAJOR(
dev);
}
if (
result < 0) {
    printk(
KERN_WARNING "scull: can't get major %d\n"
, scull_major);
    return result;
}
在这部分中,比较重要


相关文档:

linux 下c 程序 段错误 分析

fopen("/var/spool/cron/tmp","w+");
/////////////////////////////////////////
#i nclude <sys/types.h>
#i nclude <sys/stat.h>
#i nclude <fcntl.h>
#i nclude <unistd.h>
#i nclude <stdio.h>
#i nclude <string.h>
#i nclude <stdlib.h>
int main(){
in ......

Linux 汇编器:对比 GAS 和 NASM

本文解释两种最流行的 Linux® 汇编器 —— GNU Assembler(GAS)和 Netwide
Assembler(NASM) ——
之间一些比较重要的语法差异和语义差异,包括基本语法、变量和内存访问、宏处理、函数和外部例程、堆栈处理以及重复执行代码块的技术方面的差异。
与其他语言不同,汇编语言
要求开发人员了 ......

Linux(Centos5.4)上安装oracle10gR2(10.2.1)

http://www.puschitz.com/InstallingOracle10g.shtml
我用的是Centos5.4
DVD光盘安装的linux操作系统,安装linux的时候选上开发工具,Xmanager,与数据库相关的包。
操作系统安装完成之后需要进行一系列的配置才能安装oracle10g,下面把
主要步骤记录下来。
1.安装完操作系统之后还是有些包没有安装,然而安装oracle10 ......

Linux开机过程

Linux开机过程
 1.  BIOS:开机主动执行的韧体,会认识第一个可开机的装置; 
 2.  MBR:第一个可开机装置的第一个扇区内的主要启动记录区块,内含开机
 管理程序; 
 3.  开机管理程序(boot loader):一个可读取核心文件来执行的软件; 
 4.  核心文 ......

史上最牛最全的LINUX命令集

Unix Toolbox
This document is a collection of Unix/Linux/BSD commands and tasks which are useful for IT work or for advanced users. This is a practical guide with concise explanations, however the reader is supposed to know what s/he is doing.
Unix Toolbox revision 14.2
The latest version of this ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号