struct mm_struct *get_task_mm(struct task_struct *task) 其作用是得到task_struct *task的
成员变量mm,如果是user space的task的话,通过将得到mm_struct *mm 结构体的mm_users成员变量加1
如果是kernel space的task的话,其mm为null
其使用的例子如下:
int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len,unsigned int gup_flags)
{struct mm_struct *mm;mm = get_task_mm(tsk);if (!mm)return 0;
}其源码分析如下:
struct mm_struct *get_task_mm(struct task_struct *task)
{struct mm_struct *mm;
#访问task 时需要通过task_lock/task_unlock 保护起来.task_lock(task);
#得到task_struct *task的成员变量mmmm = task->mm;if (mm) {
#如果是kernel thread的话,将mm置位nullif (task->flags & PF_KTHREAD)mm = NULL;else
#是user space的thread的话,通过mmget让mm的成员变量mm_users 加1mmget(mm);}task_unlock(task);return mm;
}
mmget的定义如下,可见是通过atomic_inc,让mm->mm_users 来加1
static inline void mmget(struct mm_struct *mm)
{atomic_inc(&mm->mm_users);
}

进程管理API之get_task_mm相关推荐

  1. 进程管理API之pid_nr/pid_vnr/pid_nr_ns

    inline pid_t pid_nr(struct pid *pid) 的主要是获得进程的全局pid号,也就是从init 所在的namespace看到的pid号 pid_nr() : global ...

  2. 进程管理API之find_get_pid

    struct pid *find_get_pid(pid_t nr)根据进程号pid_t nr nr得到进程描述符struct pid ,并将进程描述符中的字段count加1 这里的进程描述符定义如下 ...

  3. boost:进程管理

    概述 Boost.Process提供了一个灵活的C++ 进程管理框架.它允许C++ developer可以像Java和.Net程序developer那样管理进程.它还提供了管理当前执行进程上下文.创建 ...

  4. Atitit.研发管理---api版本号策略与版本控制

    Atitit.研发管理---api版本号策略与版本控制 1. 1.2.1版本概述1 2. 3主版本号策略2 3. 1PATCH版本策略2 3.1. 1.2.2.1次版本号策略2 表3-1 APR中支持 ...

  5. Linux—进程管理

    1. 进程的概念 Linux是一个多用户多任务的操作系统.多用户是指多个用户可以在同一时间使用同一个linux系统:多任务是指在Linux下可以同时执行多个任务,更详细的说,linux采用了分时管理的 ...

  6. PM2 进程管理工具使用总结

    注:2016年的文章,发在掘金上,不知道是否过时了. 对于后台进程的管理,常用的工具是crontab,可用于两种场景:定时任务和常驻脚本.关于常驻脚本,今天介绍一款更好用的工具:pm2,基于nodej ...

  7. java实现进程管理,Java调用批处理或可执行文件和Runtime、Process类实现Java版进程管理器...

    Java调用批处理或可执行文件 用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Java提供的Runtime类和Process类的方法实现.下面是一种比 ...

  8. 【Linux 内核】进程管理 ( Linux 内核中的进程状态 | TASK_RUNNING | TASK_INTERRUPTIBLE | __TASK_STOPPED | EXIT_ZOMBIE )

    文章目录 一.Linux 内核中的进程状态 二.TASK_RUNNING 状态 三.TASK_RUNNING 状态 四.TASK_UNINTERRUPTIBLE 状态 五.__TASK_STOPPED ...

  9. Android系统中的进程管理:内存的回收

    本文是Android系统进程管理的第三篇文章.进程管理的前面两篇文章,请参见这里: Android系统中的进程管理:进程的创建 Android系统中的进程管理:进程的优先级 本文适合Android平台 ...

  10. Android系统中的进程管理:进程的创建

    对于操作系统来说,进程管理是其最重要的职责之一. 考虑到这部分的内容较多,因此会拆分成几篇文章来讲解. 本文是进程管理系统文章的第一篇,会讲解Android系统中的进程创建. 本文适合Android平 ...

最新文章

  1. Python的零基础超详细讲解(第十天)-Python的input()函数
  2. 30条HTML代码编写指南 for入门者
  3. Debian | 软件安装升级点滴记录
  4. Eclipse中的checkstyle插件
  5. linux tar压缩解压命令
  6. Android程序运行时出现java.lang.OutOfMemoryError 错误
  7. 用户中心 - 查询用户信息
  8. r vector 4 elements_Vector类与Enumeration接口
  9. spark源码分析之Executor启动与任务提交篇
  10. [iOS] ios的runtime
  11. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_01-项目概述-功能构架-项目背景...
  12. 【leetcode】1041. Robot Bounded In Circle
  13. java 方法值引用_Java方法引用是如何计算值的
  14. (ffmpeg3.3.x更新纪要)雷霄骅《最简单的基于FFMPEG+SDL的视频播放器》
  15. python: 校园网登录脚本
  16. iPhone屏幕旋转机制详解
  17. matlab不能定位,matlab定位问题!
  18. 个人总结出来的git仓库迁移方案
  19. eating的中文意思_eating什么意思
  20. CSU 1726: 你经历过绝望吗?两次!

热门文章

  1. RoR vs. Java
  2. Android 文件md5校验
  3. vlan网络隔离实验
  4. Java高级工程师面试题总结及参考答案
  5. 数据库系统原理与设计(第3版)第二章课后习题
  6. 数据库表的建立与基本操作
  7. 尚硅谷springSecurity笔记
  8. 精美Java 图书管理系统
  9. Kepware与C#
  10. matlab仿真零中频接收机技术,经典又实用的零中频接收机的技术解决方案