学习Unix操作系统参数大行动

系统 其他OS
我们在使用Unix操作系统的时候,Unix操作系统的参数是我们要提到的知识,今天,我们在文章中,就来讲解下Unix操作系统的知识。

我们在使用Unix操作系统的时候,我们会经常用到一些符号,也许你还是对Unix操作系统不是很熟悉,这些就是Unix操作系统的参数,今天,我们就来学习下这方面的知识。参数irq表示所要申请的硬件中断号。handler为向Unix操作系统登记的中断处理子 程序,中断产生时由Unix操作系统来调用,调用时所带参数irq为中断号,dev_id为申请时告诉系统的设备标识,regs为中断发生时寄存器内容。

device为设备名, 将会出现在/proc/interrupts文件里。flag是申请时的选项,它决定中断处理程序的一些特性,其中最重要的是中断处理程序是快速处理程序(flag里设置了SA_INTERRUPT)还是慢速处理程序(不设置SA_INTERRUPT),快速处理程序运行时,所有中断都被屏蔽,而慢速处理程序运行时,除了正在处理的中断外, 其它中断都没有被屏蔽。

在LINUX系统中,中断可以被不同的中断处理程序共享, 这要求每一个共享此中断的处理程序在申请中断时在flags里设置SA_SHIRQ, 这些处理程序之间以dev_id来区分。如果中断由某个处理程序独占,则dev_id 可以为NULL。request_irq返回0表示成功,返回-INVAL表示irq 15或 handler==NULL,返回-EBUSY表示中断已经被占用且不能共享。

作为Unix操作系统核心的一部分,设备驱动程序在申请和释放内存时不是调用malloc 和free,而代之以调用kmalloc和kfree,它们被定义为:参数len为希望申请的字节数,obj为要释放的内存指针。priority为分配内存操作的优先级,即在没有足够空闲内存时如何操作,一般用GFP_KERNEL。

与中断和内存不同,使用一个没有申请的I/O端口不会使CPU产生异常,也就不会导致诸如“segmentation fault"一类的错误发生。任何进程都可以访问 任何一个I/O端口。此时系统无法保证对I/O端口的操作不会发生冲突,甚至会 因此而使Unix操作系统崩溃。因此,在使用I/O端口前,也应该检查此I/O端口是否已有 别的程序在使用,若没有,再把此端口标记为正在使用,在使用完以后释放它。

这样需要用到如下几个函数:
调用这些函数时的参数为:from表示所申请的I/O端口的起始地址; extent为所要申请的从from开始的端口数;name为设备名,将会出现在/proc/ioports文件里。check_region返回0表示I/O端口空闲,否则为正在被使用。

在申请了I/O端口之后,就可以如下几个函数来访问I/O端口:

其中inb_p和outb_p插入了一定的延时以适应某些慢的I/O端口。 在设备驱动程序里,一般都需要用到计时机制。在LINUX系统中,时钟是由 系统接管,设备驱动程序可以向系统申请时钟。与时钟有关的系统调用有:#include  asm/param.h

struct timer_list的定义为:其中expires是要执行function的时间。Unix操作系统核心有一个全局变量JIFFS 表示当前时间,一般在调用add_timerjiffies=JIFFIES+num,表示在num个 系统最小时间间隔后执行function。Unix操作系统最小时间间隔与所用的硬件平台有关, 在核心里定义了常数HZ表示一秒内最小时间间隔的数目,则num*HZ表示num 秒。

Unix操作系统计时到预定时间就调用function,并把此子程序从定时队列里删除, 因此如果想要每隔一定时间间隔执行一次的话,就必须在function里再一次调 用add_timer。function的参数d即为timer里面的data项。

在设备驱动程序里,还可能会用到如下的一些Unix操作系统函数:这两个函数负责打开和关闭中断允许。

在用户程序调用read 、write时,因为进程的运行状态由用户态变为核心 态,地址空间也变为核心地址空间。而read、write中参数buf是指向用户程 序的私有地址空间的,所以不能直接访问,必须通过上述两个Unix操作系统函数来访问用 户程序的私有地址空间。memcpy_fromfs由用户程序地址空间往核心地址空间 复制,memcpy_tofs则反之。参数to为复制的目的指针,from为源指针,n 为要复制的字节数。

在Unix操作系统设备驱动程序里,可以调用printk来打印一些调试信息,用法与printf 类似。printk打印的信息不仅出现在屏幕上,同时还记录在文件syslog里。

【编辑推荐】

  1. 略述Unix操作系统缺点
  2. 盘点Unix操作系统优势所在
  3. 深度讲解Unix操作系统程指
  4. 学习Unix操作系统进程
  5. Unix操作系统Vi编辑程序操作模式
责任编辑:小霞
相关推荐

2009-05-18 09:23:00

网管远程备份

2010-04-16 17:19:58

Unix操作系统

2010-04-09 11:24:38

Unix操作系统

2010-01-22 00:06:26

戴尔绿色

2013-12-10 23:17:00

2010-04-16 18:19:32

Unix操作系统

2010-04-20 17:11:33

Unix操作系统

2010-04-08 16:05:49

Unix操作系统

2010-04-15 13:02:41

Unix操作系统

2010-04-30 17:27:59

Unix操作系统

2010-04-16 10:51:09

2010-05-06 17:59:50

Unix命令

2018-08-20 09:00:00

2010-04-09 14:59:03

Unix操作系统

2010-04-16 14:05:07

Unix操作系统

2010-04-08 16:49:36

Unix操作系统

2010-04-13 12:27:44

Unix操作系统

2010-04-15 14:40:26

Unix操作系统

2010-04-15 13:36:07

Unix操作系统

2010-04-09 17:16:04

Unix操作系统
点赞
收藏

51CTO技术栈公众号