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

  免費注冊 查看新帖 |

Chinaunix

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

[RAID與磁盤陣列] 請問一個infiniband驅(qū)動代碼的問題 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-06-04 15:14 |只看該作者 |倒序瀏覽
/**
* srpt_set_cmd_state() - Set the state of a SCSI command.
* @new: New state to be set.
*
* Does not modify the state of aborted commands. Returns the previous command
* state.
*/
enum srpt_command_state srpt_set_cmd_state(struct srpt_ioctx *     ioctx,
                                                  enum srpt_command_state new)
{
    enum srpt_command_state previous;

    BUG_ON(!ioctx);
    WARN_ON(new == SRPT_STATE_NEW);

    do
    {
        previous = atomic_read(&ioctx->state);
    } while ((previous != SRPT_STATE_DONE)
             && atomic_cmpxchg(&ioctx->state, previous, new) != previous);

    return previous;
}
按正常說,這段代碼執(zhí)行應該沒有什么問題,atomic_read和atomic_cmpxchg都能執(zhí)行成功。
但是為什么要用do while語句來實現(xiàn)呢?說明確實存在循環(huán)的可能嗎?會不會出現(xiàn)死循環(huán)呢?
因為我在中斷上下文執(zhí)行的時候,出了一次NMI的WATCHDOG復位,也就是在中斷中執(zhí)行時間太長了,
會不會是這里在某種情況下死循環(huán)呢?如果不是,為什么這里要寫出do while呢,完全可以用if!
(當然也有可能是執(zhí)行中斷中的其他部分代碼的時間太長導致NMI復位的)
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP