JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... meout , int * uaddr2 , int val3 ); 注 : このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。 説明 futex () システムコールは、 指定したアドレスの値が変更されるのをプログラムが待つ手段や 特定のアドレスに対して待機中のプロセスを ... ロセスが異なれば同じメモリーに対するアドレスも同じではないかもしれないが、 カーネルは異なる位置にマップされた同じメモリーを futex () で使えるよう内部でマップする)。 通常は、このシステムコールは futex (7) に書かれているように、 共有メモリー中のロックが競 ... 合する場合の処理を実装するのに用いられる。 futex (7) の操作がユーザー空間で競合なく完了しなかった場合、 カーネルに仲裁させるためにシステムコールを呼ぶ必要がある。 仲裁とい ... ... 的要素として futex ("Fast user-space mutexes"; 高速ユーザー空間 mutex) を 提供している。 futex は非常に基本的なもので、より高位なロック機構の ... 変数 (condition variables)、読み書きロック、セマフォなど) を構築するのに利用されている。 実際のところ、多くのプログラマーは futex を直接使うことはなく、 Native POSIX スレッドライブラリ (NPTL; pthreads (7) 参照) などの futex を使って作られたシステムライ ... ブラリを使うことだろう。 futex はプロセス間やスレッド間で共有することのできるメモリー片で識別される。 これらの異なるプロセスで、futext が同じアドレスであ ... ... スレッドとメモリーを共有していれば、 clear_child_tid で指定されたアドレスに 0 が書き込まれ、カーネルは以下の処理を実行する。 futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0); この処理の結果、このメモリーアドレスに対する futex wait を実行しているスレ ... ッドを一つ起こす (wake)。 futex wake 操作でのエラーは無視される。 返り値 set_tid_address () は常に呼び出し元のスレッド ID を返す。 エラー set_tid_address ... 注意 glibc はこのシステムコールに対するラッパー関数を提供していない。 syscall (2) を使って呼び出すこと。 関連項目 clone (2), futex (2), gettid (2) この文書について この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの ... ... するシステムコールは poll (2) (Linux 2.6.24 以降)、 nanosleep (2) (Linux 2.6 以降)、 clock_nanosleep (2) (Linux 2.6 以降)、 FUTEX_WAIT (Linux 2.6.22 以降) や FUTEX_WAIT_BITSET (Linux 2.6.31 以降) 操作を利用した場合の futex (2) である。 restart_syscall ... ... LKW 操作。 * POSIX メッセージキューインターフェイス: mq_receive (3), mq_timedreceive (3), mq_send (3), mq_timedsend (3). * futex (2) FUTEX_WAIT (Linux 2.6.22 以降; それ以前は常に EINTR で失敗していた)。 * getrandom (2). * pthread_mutex_lock (3), pthre ... ad_cond_wait (3) と関連 API。 * futex (2) FUTEX_WAIT_BITSET . * POSIX セマフォインターフェイス: sem_wait (3), sem_timedwait (3) (Linux 2.6.22 以降; それ以前は常 ... timedwait (2), sigwaitinfo (2). * Linux 3.7 and earlier: read (2) from an inotify (7) file descriptor * Linux 2.6.21 以前: futex (2) FUTEX_WAIT , sem_timedwait (3), sem_wait (3). * Linux 2.6.8 以前: msgrcv (2), msgsnd (2). * Linux 2.4 以前: nanosleep ... ... 能である。 PROT_SEM (Linux 2.5.7 以降) The memory can be used for atomic operations. This flag was introduced as part of the futex (2) implementation (in order to guarantee the ability to perform atomic operations required by commands such as FUTEX_WAIT ... ... 能である。 PROT_SEM (Linux 2.5.7 以降) The memory can be used for atomic operations. This flag was introduced as part of the futex (2) implementation (in order to guarantee the ability to perform atomic operations required by commands such as FUTEX_WAIT ... ... ux の clone (2) システムコールを利用している。 NPTL では、スレッド同期の基本機構 (mutex や スレッドの join 等) は Linux の futex (2) システムコールを使って実装されている。 LinuxThreads この実装の大きな特徴は以下の通りである: - メインスレッド (最初のス ... p libc.so | \ awk '{print $3}' ) | egrep -i 'threads|nptl' linuxthreads-0.10 by Xavier Leroy 関連項目 clone (2), fork (2), futex (2), gettid (2), proc (5), attributes (7), futex (7), nptl (7), sigevent (7), signal (7) pthreads の各種マニュアルページ、 ... ... 子プロセスが終了したときに子プロセスのメモリー内の ctid が指す場所にある子プロセスのスレッド ID を消去し、 そのアドレスで futex を wake (起床) させる。 このアドレスは set_tid_address (2) システムコールで変更することができる。 この機能はスレッドライブ ... -1) /* 子プロセスを待つ */ errExit("waitpid"); printf("child has terminated\n"); exit(EXIT_SUCCESS); } 関連項目 fork (2), futex (2), getpid (2), gettid (2), kcmp (2), set_thread_area (2), set_tid_address (2), setns (2), tkill (2), unshare (2), wait ( ... ... 子プロセスが終了したときに子プロセスのメモリー内の ctid が指す場所にある子プロセスのスレッド ID を消去し、 そのアドレスで futex を wake (起床) させる。 このアドレスは set_tid_address (2) システムコールで変更することができる。 この機能はスレッドライブ ... -1) /* 子プロセスを待つ */ errExit("waitpid"); printf("child has terminated\n"); exit(EXIT_SUCCESS); } 関連項目 fork (2), futex (2), getpid (2), gettid (2), kcmp (2), set_thread_area (2), set_tid_address (2), setns (2), tkill (2), unshare (2), wait ( ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。