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相关推荐

  1. 深入Linux设备驱动程序内核机制- 扫描版-有书签目录40M

    深入Linux设备驱动程序内核机制- 扫描版-有书签目录40M http://download.csdn.net/detail/zhanglu231123/4581643  深入Linux设备驱动程序 ...

  2. 《精通Linux设备驱动程序开发》——1.5 Linux发行版

    本节书摘来自异步社区<精通Linux设备驱动程序开发>一书中的第1章,第1.5节,作者:[印]Sreekrishnan Venkateswaran(斯里克里斯汉 温卡特斯瓦兰)著,更多章节 ...

  3. 《精通Linux设备驱动程序开发》——1.7 编译内核

    本节书摘来自异步社区<精通Linux设备驱动程序开发>一书中的第1章,第1.7节,作者:[印]Sreekrishnan Venkateswaran(斯里克里斯汉 温卡特斯瓦兰)著,更多章节 ...

  4. 学习笔记——《LINUX设备驱动程序(第三版)》Linux设备模型:内核添加、删除设备、驱动程序

    文章目录 1. 前言 2. 准备工作 2.1. 概念 2.2. 具体总线.设备.驱动结构体说明 2.3. 注册总线 3. 添加设备 3.1. STEP1 --发现设备并创建设备结构 struct XX ...

  5. 嵌入式Linux设备驱动程序开发指南14(Linux设备驱动使用DMA)——读书笔记

    Linux设备驱动使用DMA 十四.Linux设备驱动使用DMA 14.1 简介 14.2 缓存一致性 14.3 DMA控制器接口 14.4 流式DMA模块 14.4.1 sdma_sam_m2m.c ...

  6. 《精通Linux设备驱动程序开发》——网络接口卡

    一.驱动程序数据结构 一).简介 1.在为一个NIC写设备驱动程序时,必须操作3类数据结构 1).形成网络协议栈构造块的数据结构.套接字缓冲区,即定义在include/linux/sk_buff.h文 ...

  7. 嵌入式Linux设备驱动程序开发指南20(Linux USB设备驱动)——读书笔记

    Linux USB设备驱动 二十.Linux USB设备驱动 20.1 USB简介 20.1.1 USB2.0总线拓扑 20.1.2 USB总线枚举和设备布局 20.1.3 USB数据传输 20.1. ...

  8. Linux设备驱动程序(第三版)/深入理解计算机系统(原书第2版)/[Android系统原理及开发要点详解].(韩超,梁泉)百度云盘下载

    文档下载云盘连接:http://pan.baidu.com/s/1dDD2sgT 更多其他资料,请关注淘宝:http://shop115376623.taobao.com/ http://item.t ...

  9. 嵌入式Linux设备驱动程序开发指南17(IIO子系统一)——读书笔记

    IIO子系统一 十七.IIO子系统(一) 17.1 简介 17.2 数模转换--DAC实验 17.2.1 IIO缓冲区 17.2.2 触发器 17.2.3 工业I/O事件 17.2.4 iio工具 1 ...

最新文章

  1. vue 圆形百分比进度条_快速构建一个圆形的进度条
  2. JVM调优总结(一)- 一些概念
  3. 【图像分割模型】用BRNN做分割—ReSeg
  4. 分布式缓存memcached
  5. android 屏幕旋转不重新加载,Android webview旋转屏幕导致页面重新加载问题解决办法...
  6. C#将一个excel工作表根据指定范围拆分为多个excel文件
  7. 【系统架构】缓存Memcache 使用原子性操作add,实现并发锁
  8. POJ 2773 Happy 2006 (容斥原理)
  9. 欧姆龙cp1h指令讲解_欧姆龙cp1h常用指令学习(八)字符串处理指令
  10. 应急响应常用的工具说明
  11. 深度学习入门(看了就会)
  12. 智能营销笔记本全网最低价来了 代理送后台
  13. 山东教师教育网-山东教育志愿者服务网
  14. 用ipv6校园网访问gg学术
  15. android transact,Android Native层Binder.transact()函数调用 Binder.onTransact() 函数失败分析...
  16. 前端如何创建好看的简洁的蒙版弹窗
  17. Problem G: 规范序排列
  18. 国外热度高的域名有哪些类?
  19. 【Python3】中str方法汇总
  20. 12306要满足春运难点在哪里?外包给阿里,IBM等大型企业可不可行?

热门文章

  1. SpringMVC的请求参数,类型转换器(日期格式),请求映射
  2. Linux下screen的应用
  3. DevExpress 中 在做全选的全消功能的时候 加快效率
  4. 《25项最优时间管理工具与技巧》
  5. __format__
  6. cocos2d-x android 入门
  7. 第3章 Python的数据结构、函数和文件
  8. luogu4407 [JSOI2009]电子字典 字符串hash + hash表
  9. jQuery 时间控件推荐(1)
  10. selenium===使用docker搭建selenium分布式测试环境