JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... エラーで失敗する可能性がある。 /proc/self/maps がオープンできない場合には fopen (3) でエラーが発生し、リソース上限 RLIMIT_STACK が サポートされていない場合には getrlimit (2) でエラーが発生する。 バージョン この関数は glibc バージョン 2.2.3 以降で利用 ... ラムの使用例である。 最初の実行例は、デフォルトの属性でスレッドが作成されている (x86-32 システム上で実行)。 $ ulimit -s # No stack limit ==> default stack size is 2 MB unlimited $ ./a.out Attributes of created thread: Guard size = 4096 bytes Stack addre ... ss = 0x40196000 (EOS = 0x40397000) Stack size = 0x201000 (2101248) bytes 次の実行例では、guard size が指定された場合、 guard size はシステムのページサイズの倍数に切 ... ... 理待ちシグナル ( sigpending (2)) の集合は空となる。 新しいスレッドはスレッドを作成したスレッドの代替シグナルスタック ( sigaltstack (2)) を継承しない。 新しいスレッドは呼び出したスレッドの浮動小数点環境 ( fenv (3)) を継承する。 新しいスレッドの CPU 時間時 ... 作成されるように設定されていない限り、join 可能な状態で 作成される。 Under the NPTL threading implementation, if the RLIMIT_STACK soft resource limit at the time the program started has any value other than "unlimited", then it determines the default s ... tack size of new threads. Using pthread_attr_setstacksize (3), the stack size attribute can be explicitly set in the attr argument used to create a thread, in order to obtain a ... ... である)。 makecontext () を起動する前には、呼び出し者は、このコンテキスト用に 新しいスタックを確保し、そのアドレスを ucp->uc_stack に代入し、 さらに後継のコンテキストを定義し、そのアドレスを ucp->uc_link に 代入しなければならない。 このコンテキストが将来 ... ) の仕様が削除されている。 代わりに、アプリケーションを POSIX スレッドを使って書き直すことが 推奨されている。 注意 ucp->uc_stack の解釈は sigaltstack (2) の場合と同じである。 すなわちこの構造体には、 スタックとして用いられるメモリー領域の開始アドレスと ... x_func1) == -1) handle_error("swapcontext"); printf("func2: returning\n"); } int main(int argc, char *argv[]) { char func1_stack[16384]; char func2_stack[16384]; if (getcontext(&uctx_func1) == -1) handle_error("getcontext"); uctx_func1.uc_stack.ss_sp ... ... である)。 makecontext () を起動する前には、呼び出し者は、このコンテキスト用に 新しいスタックを確保し、そのアドレスを ucp->uc_stack に代入し、 さらに後継のコンテキストを定義し、そのアドレスを ucp->uc_link に 代入しなければならない。 このコンテキストが将来 ... ) の仕様が削除されている。 代わりに、アプリケーションを POSIX スレッドを使って書き直すことが 推奨されている。 注意 ucp->uc_stack の解釈は sigaltstack (2) の場合と同じである。 すなわちこの構造体には、 スタックとして用いられるメモリー領域の開始アドレスと ... x_func1) == -1) handle_error("swapcontext"); printf("func2: returning\n"); } int main(int argc, char *argv[]) { char func1_stack[16384]; char func2_stack[16384]; if (getcontext(&uctx_func1) == -1) handle_error("getcontext"); uctx_func1.uc_stack.ss_sp ... ... このプログラムを NPTL スレッド実装が使われている Linux/x86-32 で 動作させると、以下のような出力が得られる。 $ ulimit -s # No stack limit ==> default stack size is 2 MB unlimited $ ./a.out Thread attributes: Detach state = PTHREAD_CREATE_JOINABLE Scope = ... Inherit scheduler = PTHREAD_INHERIT_SCHED Scheduling policy = SCHED_OTHER Scheduling priority = 0 Guard size = 4096 bytes Stack address = 0x40196000 Stack size = 0x201000 bytes コマンドライン引数でスタックサイズが与えられた場合、 このプログラムは、ス ... EM Inherit scheduler = PTHREAD_EXPLICIT_SCHED Scheduling policy = SCHED_OTHER Scheduling priority = 0 Guard size = 0 bytes Stack address = 0x40197000 Stack size = 0x3000000 bytes プログラムのソース #define _GNU_SOURCE /* To get pthread_getattr_np() de ... ... このプログラムを NPTL スレッド実装が使われている Linux/x86-32 で 動作させると、以下のような出力が得られる。 $ ulimit -s # No stack limit ==> default stack size is 2 MB unlimited $ ./a.out Thread attributes: Detach state = PTHREAD_CREATE_JOINABLE Scope = ... Inherit scheduler = PTHREAD_INHERIT_SCHED Scheduling policy = SCHED_OTHER Scheduling priority = 0 Guard size = 4096 bytes Stack address = 0x40196000 Stack size = 0x201000 bytes コマンドライン引数でスタックサイズが与えられた場合、 このプログラムは、ス ... EM Inherit scheduler = PTHREAD_EXPLICIT_SCHED Scheduling policy = SCHED_OTHER Scheduling priority = 0 Guard size = 0 bytes Stack address = 0x40197000 Stack size = 0x3000000 bytes プログラムのソース #define _GNU_SOURCE /* To get pthread_getattr_np() de ... ... user_desc * tls , pid_t * ctid */ ); /* 素のシステムコールのプロトタイプ */ long clone(unsigned long flags , void * child_stack , void * ptid , void * ctid , struct pt_regs * regs ); glibc ラッパー関数の機能検査マクロの要件 ( feature_test_macros (7) ... 子プロセスは、 exit (2) を呼んで明示的に終了することもあるし、致命的なシグナルを受信した 場合に終了することもある。 child_stack 引き数は、子プロセスによって使用されるスタックの位置を指定する。 子プロセスと呼び出し元のプロセスはメモリーを共有することが ... ッサ以外の) Linux が動作する全てのプロセッサでは、 スタックは下方 (アドレスが小さい方向) へと伸びる。このため、普通は child_stack は子プロセスのスタックのために用意したメモリー空間の一番大きい アドレスを指すようにする。 flags の下位 1 バイトは子プロセス ... ... user_desc * tls , pid_t * ctid */ ); /* 素のシステムコールのプロトタイプ */ long clone(unsigned long flags , void * child_stack , void * ptid , void * ctid , struct pt_regs * regs ); glibc ラッパー関数の機能検査マクロの要件 ( feature_test_macros (7) ... 子プロセスは、 exit (2) を呼んで明示的に終了することもあるし、致命的なシグナルを受信した 場合に終了することもある。 child_stack 引き数は、子プロセスによって使用されるスタックの位置を指定する。 子プロセスと呼び出し元のプロセスはメモリーを共有することが ... ッサ以外の) Linux が動作する全てのプロセッサでは、 スタックは下方 (アドレスが小さい方向) へと伸びる。このため、普通は child_stack は子プロセスのスタックのために用意したメモリー空間の一番大きい アドレスを指すようにする。 flags の下位 1 バイトは子プロセス ... ... user_desc * tls , pid_t * ctid */ ); /* 素のシステムコールのプロトタイプ */ long clone(unsigned long flags , void * child_stack , void * ptid , void * ctid , struct pt_regs * regs ); glibc ラッパー関数の機能検査マクロの要件 ( feature_test_macros (7) ... 子プロセスは、 exit (2) を呼んで明示的に終了することもあるし、致命的なシグナルを受信した 場合に終了することもある。 child_stack 引き数は、子プロセスによって使用されるスタックの位置を指定する。 子プロセスと呼び出し元のプロセスはメモリーを共有することが ... ッサ以外の) Linux が動作する全てのプロセッサでは、 スタックは下方 (アドレスが小さい方向) へと伸びる。このため、普通は child_stack は子プロセスのスタックのために用意したメモリー空間の一番大きい アドレスを指すようにする。 flags の下位 1 バイトは子プロセス ... ... user_desc * tls , pid_t * ctid */ ); /* 素のシステムコールのプロトタイプ */ long clone(unsigned long flags , void * child_stack , void * ptid , void * ctid , struct pt_regs * regs ); glibc ラッパー関数の機能検査マクロの要件 ( feature_test_macros (7) ... 子プロセスは、 exit (2) を呼んで明示的に終了することもあるし、致命的なシグナルを受信した 場合に終了することもある。 child_stack 引き数は、子プロセスによって使用されるスタックの位置を指定する。 子プロセスと呼び出し元のプロセスはメモリーを共有することが ... ッサ以外の) Linux が動作する全てのプロセッサでは、 スタックは下方 (アドレスが小さい方向) へと伸びる。このため、普通は child_stack は子プロセスのスタックのために用意したメモリー空間の一番大きい アドレスを指すようにする。 flags の下位 1 バイトは子プロセス ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。