JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... y) インクリメントしたりデクリメントしたりできる カウンターで、プロセスは値が正になるのを待つことができる。 futex の操作は、競合がない場合には完全にユーザー空間で行なわれる。 カーネルは競合が起こった場合の仲裁に関与するだけである。 良識ある設計では競合 ... が起こらないよう努力するが、 futex も競合状態に関して最適化されている。 裸の姿では、 futex は不可分なアセンブリ命令でのみ操作される アラインメントの揃った整数である。 ... から 1 に変化したかどうかをチェックし、 変化していれば待ちプロセス (waiter) はないということであり、操作は完了する。 これは競合のない場合であり、高速でよく起こるはずである。 競合がある場合、不可分操作のインクリメントでカウンターは -1 (または他の負の数 ... ... x () で使えるよう内部でマップする)。 通常は、このシステムコールは futex (7) に書かれているように、 共有メモリー中のロックが競合する場合の処理を実装するのに用いられる。 futex (7) の操作がユーザー空間で競合なく完了しなかった場合、 カーネルに仲裁させるた ... 停止する。 引き数 uaddr2 と val3 は無視される。 futex (7) に照らし合わせると、この呼び出しは カウントのデクリメントで負の値 (競合を表す) になった場合に実行され、 別のプロセスがその futex を解放し FUTEX_WAKE の操作を実行するまで sleep する。 FUTEX_WAKE こ ... セスは使用後、返されたファイルディスクリプターを クローズしなければならない。 引き数 timeout , uaddr2 , val3 は無視される。 競合状態を防止するため、呼び出しプロセスは FUTEX_FD が返ったあと futex が up されたかどうかを確認しなければならない。 FUTEX_FD は ... ... 。 --style = ,FILE/ 診断結果に色をつける CSS ファイル FILE を指定します。 警告カテゴリには以下があります。 conflicts-sr S/R 競合 (デフォルトで有効)。 conflicts-rr R/R 競合 (デフォルトで有効)。 counterexamples, cex 競合の反例を生成します。 dangling-ali ... lookahead トークンを明示的にアイテムに結合します。 solved 解決しているシフト/還元について説明します。 counterexamples, cex 競合の反例を生成します。 all 上記の情報をすべて含みます。 none 報告を無効にします。 著者 Robert Corbett と Richard Stallman によ ... ... SETMASK, &origmask, NULL); pselect () が必要になる理由は、シグナルやファイルディスクリプターの状態変化を 待ちたいときには、競合状態を避けるために atomic なテストが必要になる からである。 (シグナルハンドラーが大域フラグを設定して戻る場合を考えてみよう。 ... を使うと、まずシグナルを禁止 (block) して、入ってくるシグナルを操作し、 望みの sigmask で pselect () を呼び出すことで、前記の競合を避けることができる。) タイムアウト これらの関数で使用される時間関連の構造体は、 < sys/time.h > で struct timeval { long tv ... ョン 2.1 以降の glibc では、 pselect () は sigprocmask (2) と select () を使ってエミュレートされていた。 この実装にはきわどい競合条件において脆弱性が残っていた。 この競合条件における問題を防止するために pselect () は設計されたのである。 最近のバージョン ... ... SETMASK, &origmask, NULL); pselect () が必要になる理由は、シグナルやファイルディスクリプターの状態変化を 待ちたいときには、競合状態を避けるために atomic なテストが必要になる からである。 (シグナルハンドラーが大域フラグを設定して戻る場合を考えてみよう。 ... を使うと、まずシグナルを禁止 (block) して、入ってくるシグナルを操作し、 望みの sigmask で pselect () を呼び出すことで、前記の競合を避けることができる。) タイムアウト これらの関数で使用される時間関連の構造体は、 < sys/time.h > で struct timeval { long tv ... ョン 2.1 以降の glibc では、 pselect () は sigprocmask (2) と select () を使ってエミュレートされていた。 この実装にはきわどい競合条件において脆弱性が残っていた。 この競合条件における問題を防止するために pselect () は設計されたのである。 最近のバージョン ... ... SETMASK, &origmask, NULL); pselect () が必要になる理由は、シグナルやファイルディスクリプターの状態変化を 待ちたいときには、競合状態を避けるために atomic なテストが必要になる からである。 (シグナルハンドラーが大域フラグを設定して戻る場合を考えてみよう。 ... を使うと、まずシグナルを禁止 (block) して、入ってくるシグナルを操作し、 望みの sigmask で pselect () を呼び出すことで、前記の競合を避けることができる。) タイムアウト これらの関数で使用される時間関連の構造体は、 < sys/time.h > で struct timeval { long tv ... ョン 2.1 以降の glibc では、 pselect () は sigprocmask (2) と select () を使ってエミュレートされていた。 この実装にはきわどい競合条件において脆弱性が残っていた。 この競合条件における問題を防止するために pselect () は設計されたのである。 最近のバージョン ... ... SETMASK, &origmask, NULL); pselect () が必要になる理由は、シグナルやファイルディスクリプターの状態変化を 待ちたいときには、競合状態を避けるために atomic なテストが必要になる からである。 (シグナルハンドラーが大域フラグを設定して戻る場合を考えてみよう。 ... を使うと、まずシグナルを禁止 (block) して、入ってくるシグナルを操作し、 望みの sigmask で pselect () を呼び出すことで、前記の競合を避けることができる。) タイムアウト これらの関数で使用される時間関連の構造体は、 < sys/time.h > で struct timeval { long tv ... ョン 2.1 以降の glibc では、 pselect () は sigprocmask (2) と select () を使ってエミュレートされていた。 この実装にはきわどい競合条件において脆弱性が残っていた。 この競合条件における問題を防止するために pselect () は設計されたのである。 最近のバージョン ... ... SETMASK, &origmask, NULL); pselect () が必要になる理由は、シグナルやファイルディスクリプターの状態変化を 待ちたいときには、競合状態を避けるために atomic なテストが必要になる からである。 (シグナルハンドラーが大域フラグを設定して戻る場合を考えてみよう。 ... を使うと、まずシグナルを禁止 (block) して、入ってくるシグナルを操作し、 望みの sigmask で pselect () を呼び出すことで、前記の競合を避けることができる。) タイムアウト これらの関数で使用される時間関連の構造体は、 < sys/time.h > で struct timeval { long tv ... ョン 2.1 以降の glibc では、 pselect () は sigprocmask (2) と select () を使ってエミュレートされていた。 この実装にはきわどい競合条件において脆弱性が残っていた。 この競合条件における問題を防止するために pselect () は設計されたのである。 最近のバージョン ... ... SETMASK, &origmask, NULL); pselect () が必要になる理由は、シグナルやファイルディスクリプターの状態変化を 待ちたいときには、競合状態を避けるために atomic なテストが必要になる からである。 (シグナルハンドラーが大域フラグを設定して戻る場合を考えてみよう。 ... を使うと、まずシグナルを禁止 (block) して、入ってくるシグナルを操作し、 望みの sigmask で pselect () を呼び出すことで、前記の競合を避けることができる。) タイムアウト これらの関数で使用される時間関連の構造体は、 < sys/time.h > で struct timeval { long tv ... ョン 2.1 以降の glibc では、 pselect () は sigprocmask (2) と select () を使ってエミュレートされていた。 この実装にはきわどい競合条件において脆弱性が残っていた。 この競合条件における問題を防止するために pselect () は設計されたのである。 最近のバージョン ... ... SETMASK, &origmask, NULL); pselect () が必要になる理由は、シグナルやファイルディスクリプターの状態変化を 待ちたいときには、競合状態を避けるために atomic なテストが必要になる からである。 (シグナルハンドラーが大域フラグを設定して戻る場合を考えてみよう。 ... を使うと、まずシグナルを禁止 (block) して、入ってくるシグナルを操作し、 望みの sigmask で pselect () を呼び出すことで、前記の競合を避けることができる。) タイムアウト これらの関数で使用される時間関連の構造体は、 < sys/time.h > で struct timeval { long tv ... ョン 2.1 以降の glibc では、 pselect () は sigprocmask (2) と select () を使ってエミュレートされていた。 この実装にはきわどい競合条件において脆弱性が残っていた。 この競合条件における問題を防止するために pselect () は設計されたのである。 最近のバージョン ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。