亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1521 | 回復(fù): 2
打印 上一主題 下一主題

[內(nèi)核同步] percpu變量和中斷 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-10-10 14:13 |只看該作者 |倒序瀏覽
看書說per-cpu類型的變量在使用時禁止搶占即可,無需加鎖保護,但是如果只是禁止搶占,在使用過程中有中斷發(fā)生,如果在中斷處理程序中使用到了該per-cpu變量不是又出現(xiàn)了競爭么?
這個問題該如何解決?

論壇徽章:
0
2 [報告]
發(fā)表于 2015-10-10 14:18 |只看該作者
我的理解是還要看這個變量的用途,如果中斷內(nèi)不會訪問那么只禁止搶占就沒有問題,如果要用還是要禁掉本地中斷的

論壇徽章:
0
3 [報告]
發(fā)表于 2015-10-26 17:58 |只看該作者

  1. asmlinkage void __sched schedule(void)
  2. {
  3.         struct task_struct *prev, *next;
  4.         unsigned long *switch_count;
  5.         struct rq *rq;
  6.         int cpu;

  7. need_resched:
  8.         preempt_disable();
  9.         cpu = smp_processor_id();
  10.         rq = cpu_rq(cpu);
  11.         rcu_sched_qs(cpu);
  12.         prev = rq->curr;
  13.         switch_count = &prev->nivcsw;

  14.         release_kernel_lock(prev);
復(fù)制代碼
這是linux2.6.32的schedule代碼,在使用cpu_rq的時候使用了鎖,因為在最后release_kernel_lock對內(nèi)核進行了鎖定,只有在獲取的了鎖的情況下才能進入此段代碼,證明per_cpu也是需要鎖保護的,如果你是內(nèi)核的修改者你會用到percpu的鎖,如果你只是寫驅(qū)動,在你驅(qū)動中用到了中斷訪問的percpu那么你就需要重新設(shè)計下了,還有你在模塊中訪問/修改了中斷的percpu,那么你需要加鎖,而此時中斷來了,他獲取你加鎖的percpu那么就死鎖了,所以不要這樣的編寫代碼,因為如果設(shè)計不好就死鎖了。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP