尽管内核模块不象应用程序一样顺序执行, 内核做的大部分动作是代表一个特定进程的. 内核代码可以引用当前进程, 通过存取全局项 current, 它在 中定义, 它产生一个指针指向结构 task_struct, 在 定义. current 指针指向当前在运行的进程. 在一个系统调用执行期间, 例如 open 或者 read, 当前进程是发出调用的进程. 内核代码可以通过使用 current 来使用进程特定的信息, 如果它需要这样. 实际上, current 不真正地是一个全局...
by ruanbanyong1 - Linux文档专区 - 2009-04-03 11:05:17 阅读(719) 回复(0)
最近在学习Linux内核(linux2.6.33),看到current宏的时候,就想动手实现current的重定向,这样以实现自己在特定函数的一个特殊功能。通常情况下,current宏是获取当前进程的进程描述符的地址,而我现在需要做的就是使用current宏获取指定进程的进程的描述地址。 在比较早的内核版本中,current宏以前是通过如下汇编指令实现的:movl $-8192,%eax; andl %esp, %eax来实现的,但是Linux2.6.33中current的宏的实现是调用了...
一般的,如果要获得当前进程的当前工作目录(CWD)的话,显然要用到如下函数:#include char * getcwd (char *buf, size_t size);这个函数的使用时显而易见的就是传递一个size长度的缓冲区,然后函数调用会填充这个缓冲区,出错情况下返回NULL,这里不讨论这个函数的一般使用,而是要说一点关于这个函数在Linux下的一个特殊使用方法:POSIX dictates that the behavior of getcwd( ) is undefined if buf is NULL. Linux’s Clibra...
既然Linux支持多cpu, smp, 那么current为什么不是一个数组或者类似数组的宏呢 我想既然真正支持多cpu , 如果在双核处理器,当前进程应该是current[cpu_index]才对啊 那么这个current到底代表的是当前哪个处理器呢? 他无法描述某一个时刻两个处理器的状态啊? 求高人指点