Chinaunix

标题: linux驱动current关键词 [打印本页]

作者: ruanbanyong1    时间: 2009-04-03 11:05
标题: linux驱动current关键词

    尽管内核模块不象应用程序一样顺序执行,
内核做的大部分动作是代表一个特定进程的. 内核代码可以引用当前进程, 通过存取全局项 current, 它在
中定义, 它产生一个指针指向结构
task_struct, 在  定义.
current 指针指向当前在运行的进程. 在一个系统调用执行期间, 例如 open 或者 read, 当前进程是发出调用的进程.
内核代码可以通过使用 current 来使用进程特定的信息, 如果它需要这样.
实际上, current 不真正地是一个全局变量. 支持 SMP
系统的需要强迫内核开发者去开发一种机制, 在相关的 CPU 上来找到当前进程. 这种机制也必须快速, 因为对 current
的引用非常频繁地发生. 结果就是一个依赖体系的机制, 常常, 隐藏了一个指向 task_struct 的指针在内核堆栈内.
实现的细节对别的内核子系统保持隐藏, 一个设备驱动可以只包含
并且引用当前进程. 例如,
下面的语句打印了当前进程的进程 ID 和命令名称, 通过存取结构 task_struct 中的某些字段.
printk(KERN_INFO "The process is \"%s\" (pid %i)\n", current->comm, current->pid);
存于 current->comm
的命令名称是由当前进程执行的程序文件的基本名称( 截短到 15 个字符, 如果需要 ).
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/93893/showart_1889293.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2