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

execv()系统调用中一段代码的含义,c,linux,linux-kernel,C,Linux,Linux Kernel,在execve()系统调用的源代码中 有一段代码如下: #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 您能解释一下它的含义吗

在execve()系统调用的源代码中

有一段代码如下:

#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

您能解释一下它的含义吗?

当用户控制的
配置剥离锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定锁定。无需深入研究,这意味着用户可以控制内核需要多少CPU来锁定记帐。这种配置对于ARM和PARISC CPU来说似乎是独一无二的

当定义了
SPLIT\u RSS\u COUNTING
时,需要保护
add\u mm\u计数器
不受并发访问,因此使用
mm->page\u table\u lock
锁使用自旋锁对其进行保护

自旋锁是同步多个CPU的最基本方式。当输入旋转锁且锁已由其他CPU持有时,当前CPU将进入循环,检查锁标志的值。当标志值变为非锁定时,当前CPU将获取锁并从
spin_lock
功能返回