首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >execv()系统调用中一段代码的含义

问execv()系统调用中一段代码的含义
EN

Stack Overflow用户
提问于 2011-02-01 19:44:21
回答 1查看 827关注 0票数 1

在execve()系统调用http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=fs/exec.c#l177的源代码中

有一段代码是这样的:

代码语言:javascript
复制
#ifdef SPLIT_RSS_COUNTING
  add_mm_counter(mm, MM_ANONPAGES, diff);
#else
  spin_lock(&mm->page_table_lock);
  add_mm_counter(mm, MM_ANONPAGES, diff);
  spin_unlock(&mm->page_table_lock);
#endif

你能解释一下它的意思吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-01 19:52:21

SPLIT_RSS_COUNTING定义是在CONFIG_SPLIT_PTLOCK_CPUS的用户控制配置大于配置CONFIG_NR_CPUS定义的物理CPU数量时定义的。无需深入研究,这意味着用户可以控制内核锁定记帐所需的CPU数量。此配置对于ARM和PARISC CPU似乎是唯一的。

当定义了SPLIT_RSS_COUNTING时,需要保护add_mm_counter不被并发访问,因此使用使用mm->page_table_lock锁的自旋锁来保护它。

自旋锁是同步多个CPU的最基本方法。当进入旋转锁并且锁已经被不同的CPU持有时,当前的CPU将进入循环,检查锁标志的值。当标志值变为非锁定时,当前CPU将获得锁并从spin_lock函数返回。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4862093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档