Chinaunix首页 | 论坛 | 博客
  • 博客访问: 33352
  • 博文数量: 21
  • 博客积分: 338
  • 博客等级: 一等列兵
  • 技术积分: 165
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-31 09:41
文章分类

全部博文(21)

文章存档

2011年(21)

我的朋友

分类: LINUX

2011-03-18 22:00:05

MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

每个printk都会有个优先级,内核一共有8个优先级,它们都有对应的宏定义。如果未指定优先级,内核会选择默认的优先级DEFAULT_MESSAGE_LOGLEVEL。如果优先级数字比int console_loglevel变量小的话,消息就会打印到控制台上。如果syslogdklogd守护进程在运行的话,则不管是否向控制台输出,消息都会被追加进/var/log/messages文件。klogd 只处理内核消息,syslogd 处理其他系统消息,比如应用程序

-----------------------------------------------------------------------------------------------------------------

drivers\char\keyboard.c中键盘的驱动中关于timer

-------------------------------------------------------------------------------------------------------------------

kmallocget_free_page申请的内存位于物理内存映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因此存在较简单的转换关系,virt_to_phys()可以实现内核虚拟地址转化为物理地址:

vmalloc申请的内存则位于vmalloc_startvmalloc_end之间,与物理地址没有简单的转换关系,虽然在逻辑上它们也是连续的,但是在物理上它们不要求连续。

内核空间中,从3Gvmalloc_start这段地址是物理内存映射区域(该区域中包含了内核镜像、物理页框表mem_map等等),比如我们使用的VMware虚拟系统内存是160M,那么3G3G+160M这片内存就应该映射物理内存。在物理内存映射区之后,就是vmalloc区域。对于160M的系统而言,vmalloc_start位置应在3G+160M附近(在物理内存映射区与vmalloc_start期间还存在一个8Mgap来防止跃界),vmalloc_end的位置接近4G(最后位置系统会保留一片128k大小的区域用于专用页面映射)

-------------------------------------------------------------------------------------------------------------------

 remap_page_range函数的功能是构造用于映射一段物理地址的新页表,实现了内核空间与用户空间的映射,其原型如下: 

int remap_page_range(vma_area_struct *vma, unsigned long from, unsigned long to, unsigned long size, pgprot_tprot); 

-----------------------------------------------------------------------------------------------------------------

阅读(575) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~