欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > linux >内容正文

linux

linux 设备驱动程序开发 第3版_Chapter2_The Current Process

发布时间:2024/4/14 linux 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 linux 设备驱动程序开发 第3版_Chapter2_The Current Process 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

2019独角兽企业重金招聘Python工程师标准>>>

尽管内核模块不像普通应用程序那样顺序执行,但是内核大部分的操作还是为指定的进程来服务 的。内核代码可以通过全局变量current来访问当前进程,这个全局变量是在asm/current.h文件中定义的,current是一个指针变量,它的类型为task_struct结构体,这个结构体是linux/sched.h 文件中定义的。在执行系统调用open和read时,调用这两个函数的进程就是当前进程。内核代码可 以通过current来访问当前进程的一些信息。我们在第6章会有这样的例子。

事实上,current并不是一个真正的全局变量。为了支持SMP(对称多处理器)系统,内核开发者 用一种特殊的机制来保证相关的CPU都能访问到current。因为current会被频繁的访问,所以这种 机制的响应速度必须要快,通常采取的是在内核堆栈上隐藏一个指向task_struct的指针。如果驱动 程序要访问当前进程,只需包含linux/sched.h头文件即可。例如,下列语句会输出当前进程的进程id和可执行文件的名称。

printk(KERN_INFO "The process is "%s" (pid %i)\n",current->comm, current->pid);

current->comm中保存有当前进程执行的可执行文件的文件名(如果需要的话会保存前15个字符)。

转载于:https://my.oschina.net/u/1262825/blog/163793

总结

以上是生活随笔为你收集整理的linux 设备驱动程序开发 第3版_Chapter2_The Current Process的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。