博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程创建时内存描述符处理
阅读量:4151 次
发布时间:2019-05-25

本文共 1414 字,大约阅读时间需要 4 分钟。

static int copy_mm(unsigned long clone_flags, struct task_struct *tsk){ struct mm_struct *mm, *oldmm; int retval;  tsk->min_flt = tsk->maj_flt = 0; tsk->nvcsw = tsk->nivcsw = 0;#ifdef CONFIG_DETECT_HUNG_TASK tsk->last_switch_count = tsk->nvcsw + tsk->nivcsw;#endif  tsk->mm = NULL; tsk->active_mm = NULL;  /*  * Are we cloning a kernel thread?  *  * We need to steal a active VM for that..  */ oldmm = current->mm; if (!oldmm)  return 0;  /* initialize the new vmacache entries */ vmacache_flush(tsk);  if (clone_flags & CLONE_VM) {  atomic_inc(&oldmm->mm_users);  mm = oldmm;  goto good_mm; }  retval = -ENOMEM; mm = dup_mm(tsk); if (!mm)  goto fail_nomem; good_mm: tsk->mm = mm; tsk->active_mm = mm; return 0; fail_nomem: return retval;} /* * Allocate a new mm structure and copy contents from the * mm structure of the passed in task structure. */static struct mm_struct *dup_mm(struct task_struct *tsk){ struct mm_struct *mm, *oldmm = current->mm; int err;  mm = allocate_mm(); if (!mm)  goto fail_nomem;  memcpy(mm, oldmm, sizeof(*mm));  if (!mm_init(mm, tsk))  goto fail_nomem;  err = dup_mmap(mm, oldmm); if (err)  goto free_pt;  mm->hiwater_rss = get_mm_rss(mm); mm->hiwater_vm = mm->total_vm;  if (mm->binfmt && !try_module_get(mm->binfmt->module))  goto free_pt;  return mm; free_pt: /* don't put binfmt in mmput, we haven't got module yet */ mm->binfmt = NULL; mmput(mm); fail_nomem: return NULL;}  
 
 

转载地址:http://hzhti.baihongyu.com/

你可能感兴趣的文章
postgresql监控工具pgstatspack的安装及使用
查看>>
【JAVA数据结构】双向链表
查看>>
Objective-C 基础入门(一)
查看>>
C++模板
查看>>
【C#】如何实现一个迭代器
查看>>
【C#】利用Conditional属性完成编译忽略
查看>>
(python版)《剑指Offer》JZ01:二维数组中的查找
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
Mysql复制表以及复制数据库
查看>>
Linux分区方案
查看>>
如何使用 systemd 中的定时器
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>