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

Chinaunix

標題: 高手指點:為什么可以在任何上下文調(diào)用dev_get_by_name() [打印本頁]

作者: kyok520    時間: 2013-03-18 16:42
標題: 高手指點:為什么可以在任何上下文調(diào)用dev_get_by_name()
為什么可以在任何上下文調(diào)用dev_get_by_name()?
在內(nèi)核源碼里面
struct net_device *dev_get_by_name(struct net *net, const char *name)
{
        struct net_device *dev;

        read_lock(&dev_base_lock);
        dev = __dev_get_by_name(net, name);
        if (dev)
                dev_hold(dev);
        read_unlock(&dev_base_lock);
        return dev;
}
該函數(shù)是要去拿dev_base_lock這個讀寫鎖的。而dev_base_lock這個讀寫鎖的所有寫操作只是禁止了軟中斷,并沒有禁止中斷。那么如果在isr中調(diào)用dev_get_by_name()。而dev_base_lock這個鎖又恰好被一個寫操作獲得了鎖,這個時候不會死鎖嗎?

請教高手指點
作者: daniel_11    時間: 2013-03-19 12:05
確實有點怪啊,除非這個鎖只是用在軟中斷?所以鎖軟中斷就夠了? 同問求解!
作者: 瀚海書香    時間: 2013-03-19 12:55
回復 1# kyok520
該函數(shù)是要去拿dev_base_lock這個讀寫鎖的。而dev_base_lock這個讀寫鎖的所有寫操作只是禁止了軟中斷,并沒有禁止中斷。那么如果在isr中調(diào)用dev_get_by_name()。而dev_base_lock這個鎖又恰好被一個寫操作獲得了鎖,這個時候不會死鎖嗎?

恩。貌似dev_get_by_name應該不能再中斷上下文中調(diào)用。
   
作者: yevv    時間: 2013-03-19 21:05
如果寫操作所在的進程 和 ISR是在同一個CPU上運行的話,那么寫操作所在的進程應該可以遷移到其他CPU上運行吧

作者: 瀚海書香    時間: 2013-03-20 08:30
回復 4# yevv
如果寫操作所在的進程 和 ISR是在同一個CPU上運行的話,那么寫操作所在的進程應該可以遷移到其他CPU上運行吧

首先是不會自動遷移的其他CPU的,況且如果只有一個CPU呢?
作者原來的注釋是錯的。


   
作者: 瀚海書香    時間: 2013-03-20 08:36
回復 1# kyok520

The authors have confirmed our doubts!

The comment is wrong.
net/  has essentially no functions which can be called from hard irq context.
As matter of fact, there is only one: netif_rx(). Plus some trivial
library functions.
   
作者: daniel_11    時間: 2013-03-20 09:30
瀚海書香 發(fā)表于 2013-03-20 08:36
回復 1# kyok520

The authors have confirmed our doubts!



作者: kyok520    時間: 2013-03-20 18:02
回復 6# 瀚海書香


    請問下你發(fā)的這個注釋在哪里看到的?
作者: 瀚海書香    時間: 2013-03-23 10:05
回復 8# kyok520
這不是哪里看到的。
是我跟netdev成員溝通的結(jié)果。這塊我已經(jīng)提交了patch,有人認為需要添加,但是Eric dumazet認為不需要。現(xiàn)在還在討論是否放到comment中。

   
作者: goter    時間: 2013-03-25 12:23
瀚海書香 發(fā)表于 2013-03-23 10:05
回復 8# kyok520
這不是哪里看到的。
是我跟netdev成員溝通的結(jié)果。這塊我已經(jīng)提交了patch,有人認為需要 ...


目測你的changelog又要被噴
作者: 瀚海書香    時間: 2013-03-25 13:16
回復 10# goter
這塊代碼從linus建立分支開始就有任何改動。難不成需要我把netdev分支之前的log也拔出來

BTW:有好的建議嗎?直接回復帖子或者郵件都可以

   
作者: goter    時間: 2013-03-26 09:28
瀚海書香 發(fā)表于 2013-03-25 13:16
回復 10# goter
這塊代碼從linus建立分支開始就有任何改動。難不成需要我把netdev分支之前的log也拔出來: ...


take easy,建議就是drop掉...
這種patch一般關(guān)心的人不是很多
如果是BUG FIX的話就會受歡迎了,會有人幫忙review,幫助你改進

話說回來,提這種patch實際上對本身的技術(shù)也沒有太大的提高...還是丟棄掉這個patch吧:wink:

被david噴噴也就習慣了,我現(xiàn)在就很淡定..
作者: Godbach    時間: 2013-03-26 10:37
回復 11# 瀚海書香

Wow, thats really useful.

Why is this function not allowed from hard irq context, we have no idea.

Why someone would like to call it from hard irq context, we have no
idea.

I hope to get a clear explanation here, not only playing with words.

Thanks


呵呵,這個提問蠻有意思的。

BTW,好像 BUG 在最新版本中已經(jīng)修復了?
   
作者: 瀚海書香    時間: 2013-03-26 11:14
回復 12# goter
話說回來,提這種patch實際上對本身的技術(shù)也沒有太大的提高...還是丟棄掉這個patch吧

被david噴噴也就習慣了,我現(xiàn)在就很淡定..

剛看到david的郵件的時候,的確有些火大。想想還是算了,誰叫人家是老大呢
決定放棄這個patch的再次提交了。。。

   
作者: 瀚海書香    時間: 2013-03-26 11:15
回復 13# Godbach
感覺他是明知故問啊

   
作者: crspo    時間: 2013-03-26 12:41
多花點時間在fix bug或者新feature吧,之前有人發(fā)了patch修改coding style,被一頓噴,原因是難以追溯歷史并且backport到stable分支。
代碼本身如果已經(jīng)說明問題了,就不需要加額外的comment了。

作者: crspo    時間: 2013-03-26 12:42
David偶爾會發(fā)private mail,就看你的抵抗能力了:)




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2