进程管理API之get_task_mm
来源:互联网 发布:知英日剧 编辑:程序博客网 时间:2024/04/28 00:14
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 来加1static inline void mmget(struct mm_struct *mm){atomic_inc(&mm->mm_users);}
阅读全文
0 0
- 进程管理API之get_task_mm
- 进程管理API之__task_pid_nr_ns
- 进程管理API之find_get_pid
- 进程管理API之find_pid_ns
- 进程管理API之find_task_by_pid_ns
- 进程管理API之find_task_by_vpid
- 进程管理API之find_vpid
- 进程管理API之ns_of_pid
- 进程管理API之pid_task
- 进程管理API之kernel_thread
- 进程管理API之task_active_pid_ns
- 进程管理API之get_pid_task
- 进程管理API之task_tgid_nr_ns
- 进程管理API之get_task_pid
- 进程管理API之find_ge_pid
- 进程管理API之get_pid/ put_pid
- 进程管理API之pid_nr/pid_vnr/pid_nr_ns
- Atitit.进程管理常用api
- VMWare ESXi 6虚拟机克隆
- three -添加辅助线
- 小鸟云四个数据中心介绍
- 面向对象程序设计上机练习五(类和对象)
- sklearn使用总结
- 进程管理API之get_task_mm
- 品味舍得
- QPushButton 文字居左
- Android多权限请求
- javascript定义函数的几种常用方式
- docfx 做一个和微软一样的文档平台
- 解决项目报错出现Access restriction: The type BASE64Encoder is not accessible due to restriction
- 金蝶K3对特定单据表体数据进行列锁定
- SpringMVC数据验证