Linuxカーネルモジュールでは、リスニングソケットのacceptハンドラーを呼び出して、カーネルスレッドに座って待機しないようにします。O_NONBLOCK
したがって、acceptハンドラーに渡す必要があります。しかし、非ブロッキングソケットではなく、接続されたソケットでタイムアウトを使用したいと思います。
カーネルのソケットを非ブロッキングに構成するための2つのメカニズムを知っています。O_NONBLOCKをsock->op
(struct socket * sock
)のacceptまたはconnectハンドラーに渡します。その後、O_NONBLOCKフラグをリセットする方法がわかりません。それ以外の場合、ソケットのO_NONBLOCKフラグをどのように変更しますか?
受け入れ時のタイムアウトなど、別の方法はありますか?これにより、リスニングポートに接続されているソケットがブロックされる可能性があります。