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

  免費(fèi)注冊 查看新帖 |

Chinaunix

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

[中斷] ksoftirqd 被中斷-小問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-02-01 21:00 |只看該作者 |倒序?yàn)g覽
本帖最后由 wzw200 于 2015-02-01 22:00 編輯

內(nèi)核線程ksoftirqd 在執(zhí)行do_softirq處理一個(gè)軟中斷--taskletA時(shí)候被中斷的了,
進(jìn)而執(zhí)行irq_exit->do_softirq--taskletA,這個(gè)函數(shù)又是可重入的了
這樣會(huì)不會(huì)出問題


1、中斷退出執(zhí)行的irq_exit
2、內(nèi)核線程ksoftirqd

這兩種情況是怎能么實(shí)現(xiàn)互互斥的呢,


http://www.72891.cn/forum.php?mod=viewthread&tid=1966733

asmlinkage void do_softirq(void)
{
        __u32 pending;
        unsigned long flags;
        //
        // 這個(gè)函數(shù)判斷,如果當(dāng)前有硬件中斷嵌套,或者
        // 有軟中斷正在執(zhí)行時(shí)候,則馬上返回。在這個(gè)
        // 入口判斷主要是為了與 ksoftirqd 互斥。
        //
        if (in_interrupt())

                return;

沒看明白!

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2015-02-01 21:25 |只看該作者
do_softirq  
{
        //禁止中斷,保存中斷標(biāo)志
        local_irq_save(flags);
                。。。。。。。
                //恢復(fù)之
        local_irq_restore(flags);
}
看了其它人的帖子,好像有這個(gè)

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2015-02-01 21:55 |只看該作者
軟中斷是不能再被其他軟中斷打斷的,只有硬中斷可以打斷軟中斷去執(zhí)行中斷上半部,所以你說的這個(gè)問題應(yīng)該不存在啊。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2015-02-01 22:03 |只看該作者
回復(fù) 3# ran4029

那個(gè)軟中斷線程,在執(zhí)行do_softirq的時(shí)候,應(yīng)該是這樣的,只是想不通他是怎么實(shí)現(xiàn)的


   

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2015-02-01 22:12 |只看該作者
do_softirq()中有兩個(gè)非常值得注意的地方:

asmlinkage void do_softirq(void)
{
/* 如果當(dāng)前CPU指令運(yùn)行于中斷或者軟中斷文境中,必須直接返回。
   這可以回答guotie的問題, local_bh_disable()的實(shí)際作用是標(biāo)志當(dāng)前任務(wù)_互斥_軟中斷。
   1. 如果軟中斷文境下,任務(wù)在__do_softirq()函數(shù)時(shí),被中斷打斷,進(jìn)入中斷處理,中斷執(zhí)行完后,再次進(jìn)入軟中斷,到達(dá)這里就會(huì)返回。
   2. 還有一個(gè),就是如果在內(nèi)核任務(wù)ksoftirqd文境中執(zhí)行 do_softirq()的時(shí)候,被中斷打斷后,也不會(huì)實(shí)質(zhì)進(jìn)入軟中斷,這樣可以避免大部分的內(nèi)核同步問題 */
if (in_interrupt())
return;

local_irq_save(flags);

if (local_softirq_pending()) {
curctx = current_thread_info();

這是我查的資料,我想不通,第二種情況是怎么實(shí)現(xiàn)的,

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2015-02-01 22:17 |只看該作者
asmlinkage void do_softirq(void)
{
        __u32 pending;
        unsigned long flags;

        if (in_interrupt())
                return;

        local_irq_save(flags);

        pending = local_softirq_pending();

        if (pending)
                __do_softirq();

        local_irq_restore(flags);
}

asmlinkage void __do_softirq(void)
{
        struct softirq_action *h;
        __u32 pending;
        int max_restart = MAX_SOFTIRQ_RESTART;
        int cpu;

        pending = local_softirq_pending();
        account_system_vtime(current);

        __local_bh_disable((unsigned long)__builtin_return_address(0));
        lockdep_softirq_enter();

        cpu = smp_processor_id();
        ............................
        _local_bh_enable();
}

static inline void __local_bh_disable(unsigned long ip)
{
        add_preempt_count(SOFTIRQ_OFFSET);
        barrier();
}

好吧,我想明白了

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2015-02-03 14:26 |只看該作者
回復(fù) 6# wzw200

http://www.72891.cn/thread-4165519-1-1.html
我之前有發(fā)過一個(gè)帖子。應(yīng)該跟你這個(gè)疑問略有相同之處。只不過我現(xiàn)在也還未完全明白

其中的關(guān)鍵點(diǎn)兒應(yīng)該集中在 中斷返回 時(shí)  堆;謴(fù) 與 軟中斷調(diào)度的區(qū)別


   

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2015-02-03 16:39 |只看該作者
回復(fù) 7# anyhit


中斷返回 時(shí)  堆;謴(fù) 與 軟中斷調(diào)度的區(qū)別

這個(gè)這幾天,我看明白了,我一會(huì)到你那里給你回下,
我看這塊的時(shí)候,都是自己想偏了,CPU怎么運(yùn)行,還要看代碼
QQ:88486969

   
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP