Я не могу понять, какова роль функции local_bh_disable()
, которая вызывается перед функцией conn_request()
здесь . Означает ли это, что только один процесс может получить доступ к этому разделу в данный момент (какая-то блокировка)? Я спрашиваю об этом, потому что я хочу удалить некоторые записи из таблицы 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