为什么在调用函数conn_request()之前需要先调用local_bh_disabled()?

时间:2020-07-14 11:08:51

标签: linux networking tcp linux-kernel

我无法理解函数local_bh_disable()的作用,该函数在函数conn_request() here之前被调用。这是否意味着此时只有一个进程可以访问此部分(某种锁定)?我之所以这样问是因为,我想在调用ehash之后从conn_request表中删除一些条目,但是我不知道是否必须在本节中进行操作。

if (th->syn) {
    if (th->fin)
        goto discard;
    /* It is possible that we process SYN packets from backlog,
     * so we need to make sure to disable BH right there.
     */
    local_bh_disable();
    acceptable = icsk->icsk_af_ops->conn_request(sk, skb) >= 0;
    local_bh_enable();

    if (!acceptable)
        return 1;
    consume_skb(skb);
    return 0;
}

PS:来自Linux内核4.15的源代码

0 个答案:

没有答案