timespecに設定し、do_sys_poll()でfileIDの状態変化およびシグナルが発生するまでウエイトします。timeout_msecsがマイナスならto=NULLで、タイムアウトしません。シグナルが発生したら-EINTR、タイムアウトなら0、fileID状態変化なら状態変化したfileID数がretになります。-ERESTART_RESTARTBLOCKとし、条件がととのへば、ユーザプロセスへの復帰時、restart_syscallシステムコールをコールし、do_restart_poll()がコールされ残った時間分pollします。*ufdsを複写します。entries[]の配列はN_STACK_PPSとなります。*ufdsをセットします。kmalloc()での実装の負荷を軽減するべく、しかも余分な静的メモリ消費を防ぐための実装で、pollの本質と関係ありません。tableを初期化します。IDがリストされます。NULLは、ファイルオペレーションpollコールバックで、ウエイトキューにリストされないという事です。次のifはウエイトするケースでstackがウエイトタイムです。IDをpfdに設定し、do_pollfd()でpollします。IDをチェックし続けます。IDは状態変化がなくてもウエイトリストされず、任意1つ状態変化があれば必ず復帰する事になります。countは返り値で、プラスの場合、pollシステムコールの返値は状態変化のFILEの数ということです。ソケットのようなpollでは、1以上の結果となる事が想定されます。IDに状態変化がなければ、signal_pending()でシグナルをチェックし、受信していれば返り値が-EINTRとなります。0でループをブレイクします。count;}追記シグナルでpollを脱しても、システムコール再実行で、タイムアウトまでpollし続けるとの理解ですが、以下の検証では、そのような結果となりません。シグナルマターかと思いますが、頃合いを見計らって検証したいと思っていますが・・・。ご指摘あれば幸いです。timeout備考ppollはpollウエイト中の、シグナルをマスクコントロール(ファイル状態変化後に、シグナル受信の保障)する機能を付加した物で、本質的な機能はpollと同じです。ノースAdsense広告情報が設定されていません。