进程管理API之get_task_mm
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相关推荐
- 进程管理API之pid_nr/pid_vnr/pid_nr_ns
inline pid_t pid_nr(struct pid *pid) 的主要是获得进程的全局pid号,也就是从init 所在的namespace看到的pid号 pid_nr() : global ...
- 进程管理API之find_get_pid
struct pid *find_get_pid(pid_t nr)根据进程号pid_t nr nr得到进程描述符struct pid ,并将进程描述符中的字段count加1 这里的进程描述符定义如下 ...
- boost:进程管理
概述 Boost.Process提供了一个灵活的C++ 进程管理框架.它允许C++ developer可以像Java和.Net程序developer那样管理进程.它还提供了管理当前执行进程上下文.创建 ...
- 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中支持 ...
- Linux—进程管理
1. 进程的概念 Linux是一个多用户多任务的操作系统.多用户是指多个用户可以在同一时间使用同一个linux系统:多任务是指在Linux下可以同时执行多个任务,更详细的说,linux采用了分时管理的 ...
- PM2 进程管理工具使用总结
注:2016年的文章,发在掘金上,不知道是否过时了. 对于后台进程的管理,常用的工具是crontab,可用于两种场景:定时任务和常驻脚本.关于常驻脚本,今天介绍一款更好用的工具:pm2,基于nodej ...
- java实现进程管理,Java调用批处理或可执行文件和Runtime、Process类实现Java版进程管理器...
Java调用批处理或可执行文件 用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Java提供的Runtime类和Process类的方法实现.下面是一种比 ...
- 【Linux 内核】进程管理 ( Linux 内核中的进程状态 | TASK_RUNNING | TASK_INTERRUPTIBLE | __TASK_STOPPED | EXIT_ZOMBIE )
文章目录 一.Linux 内核中的进程状态 二.TASK_RUNNING 状态 三.TASK_RUNNING 状态 四.TASK_UNINTERRUPTIBLE 状态 五.__TASK_STOPPED ...
- Android系统中的进程管理:内存的回收
本文是Android系统进程管理的第三篇文章.进程管理的前面两篇文章,请参见这里: Android系统中的进程管理:进程的创建 Android系统中的进程管理:进程的优先级 本文适合Android平台 ...
- Android系统中的进程管理:进程的创建
对于操作系统来说,进程管理是其最重要的职责之一. 考虑到这部分的内容较多,因此会拆分成几篇文章来讲解. 本文是进程管理系统文章的第一篇,会讲解Android系统中的进程创建. 本文适合Android平 ...
最新文章
- Python的零基础超详细讲解(第十天)-Python的input()函数
- 30条HTML代码编写指南 for入门者
- Debian | 软件安装升级点滴记录
- Eclipse中的checkstyle插件
- linux tar压缩解压命令
- Android程序运行时出现java.lang.OutOfMemoryError 错误
- 用户中心 - 查询用户信息
- r vector 4 elements_Vector类与Enumeration接口
- spark源码分析之Executor启动与任务提交篇
- [iOS] ios的runtime
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_01-项目概述-功能构架-项目背景...
- 【leetcode】1041. Robot Bounded In Circle
- java 方法值引用_Java方法引用是如何计算值的
- (ffmpeg3.3.x更新纪要)雷霄骅《最简单的基于FFMPEG+SDL的视频播放器》
- python: 校园网登录脚本
- iPhone屏幕旋转机制详解
- matlab不能定位,matlab定位问题!
- 个人总结出来的git仓库迁移方案
- eating的中文意思_eating什么意思
- CSU 1726: 你经历过绝望吗?两次!