FreeBSD 日本語マニュアル検索 (jman/japropos/jwhatis)


日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。

4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)

13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。



検索コマンド: man apropos whatis
コマンド/キーワード:
日本語マニュアル RELEASE :
セクション:
Table of Contents
名称 | ライブラリ | 書式 | 解説 | 戻り値 | エラー | 関連項目 | 規格
THR_NEW(2)             FreeBSD システムコールマニュアル             THR_NEW(2)

名称
     thr_new -- 実行の新しいスレッドを作成する

ライブラリ
     標準 C ライブラリ (libc, -lc)

書式
     #include <sys/thr.h>

     int
     thr_new(struct thr_param *param, int param_size);

解説
     この関数は、スレッド化を実装することを目的としています。通常のアプリケー
     ションは、代わりに pthread_create(3) を呼び出すべきです。

     thr_new() システムコールは、現在のプロセスのコンテキストでの実行の新しい
     カーネルでスケジューリングされたスレッドを作成します。新しく作成されたス
     レッドは、プロセスの既存のカーネルでスケジューリングされたスレッドでプロ
     セスのすべての属性を共有しますが、プライベートなプロセッサの実行状態があ
     ります。新しいスレッドのためのマシンのコンテキストは、コプロセッサの状態
     を含んで、作成しているスレッドのコンテキストからコピーされます。FPU の状
     態と特有のマシンレジスタは、コピーから除外されます。これらは、ABI 要件と
     syscall パラメータにしたがって設定されます。新しいスレッドのための FPU 状
     態は、クリーンするために再初期化されます。

     param 構造体は、スレッド作成に影響しているパラメータを供給します。構造体
     は、次のように

     struct thr_param {
         void          (*start_func)(void *);
         void          *arg;
         char          *stack_base;
         size_t        stack_size;
         char          *tls_base;
         size_t        tls_size;
         long          *child_tid;
         long          *parent_tid;
         int           flags;
         struct rtprio *rtp;
     };
     そして、次のフィールドを含むように <sys/thr.h> ヘッダで定義されます:

     start_func  スレッドのエントリ関数へのポインタ。カーネルは、新しいスレッ
                 ドが、ユーザ空間への最初のリターンで関数を実行し始めるように
                 準備します。

     arg         エントリ関数に供給される不透明な引数。

     stack_base  スタックのベースアドレス。スタックは、呼び出し側によって割り
                 付けられなければなりません。いくつかのアーキテクチャで、ABI
                 は、start_func のための実行環境を保証するためにシステムが情報
                 をスタックに置くことを必要とするかもしれません。

     stack_size  スタックサイズ。

     tls_base    TLS ベースアドレス。TLS ベースの値は、新しいスレッドのコンテ
                 キストで、ABI 定義されたマシンのレジスタにロードされます。

     tls_size    TLS サイズ。

     child_tid   子プロセスの使用のために新しいスレッド識別子を格納するアドレ
                 ス。

     parent_tid  親プロセスの使用のために新しいスレッド識別子を格納するアドレ
                 ス。

                 child_tidparent_tid の両方は、parent_tid がスレッドの作成
                 者によって使用される間に、child_tid が、thr_self(2) syscall
                 を発行せずにそのスレッド識別子を取得するために新しいスレッド
                 によって使用される目的で提供されます。新しいスレッドは、親プ
                 ロセスが、それにアクセスするのに十分に実行するチャンスがある
                 前に、そのスレッドデータを終了して、解放するので、後者は、
                 child_tid から分離されます。

     flags       スレッド作成フラグ。flags メンバは、次のフラグを指定します:

                 THR_SUSPENDED     サスペンド状態の新しいスレッドを作成しま
                                   す。フラグは、現在実装されていません。

                 THR_SYSTEM_SCOPE  システム範囲スレッドを作成します。フラグ
                                   は、現在実装されていません。

     rtp         新しいスレッドのためのリアルタイムのスケジューリングの優先
                 度。作成スレッドから優先度を継承するために NULL であるかもし
                 れません。

     param_size 引数は、param 構造体のサイズに設定されるべきです。

     追加のスレッドの最初の成功した作成の後に、プロセスは、マルチスレッドとし
     てカーネルによってマークされます。特に、P_HADTHREADS フラグは、プロセスの
     p_flag (ps(1) の出力で目に見える) に設定され、いくつかの操作は、マルチス
     レッドのモードで実行されます。例えば、execve(2) システムコールは、成功し
     た実行でそれを呼び出しことを除いて、すべてのスレッドを終了します。

戻り値
     成功するなら、thr_new() は、0 を返し、そうでなければ、-1 が返され、errno
     は、エラーを示す値に設定されます。

エラー
     thr_new() 操作は、次のエラーを返します:

     [EFAULT]           param 引数によって指されたメモリが、有効ではありませ
                        ん。

     [EFAULT]           param 構造体 child_tid, parent_tid または rtp 引数に
                        よって指されたメモリが、有効ではありません。

     [EFAULT]           指定されたスタックベースが、無効か、または、カーネル
                        が、要求された初期のデータをスタックに置くことができま
                        せんでした。

     [EINVAL]           param_size 引数が、負の値を指定するか、または、値が、
                        カーネルが解釈できる最も大きい struct param サイズより
                        大きくなっています。

     [EINVAL]           rtp メンバが、NULL ではなく、無効のスケジューリングパ
                        ラメータを指定しています。

     [EINVAL]           指定された TLS ベースが、無効です。

     [EPERM]            呼び出し側には、スケジューリングパラメータまたはスケ
                        ジューリングポリシを設定するためのパーミッションがあり
                        ません。

     [EPROCLIM]         新しいスレッドの作成が、RACCT_NTHR 制限を越えていま
                        す、racct(2) を参照。

     [EPROCLIM]         新しいスレッドの作成が、
                        kern.threads.max_threads_per_proc sysctl(2) 制限を越え
                        ています。

     [ENOMEM]           新しいスレッドの構造体を割り付けるための十分なカーネル
                        メモリがありません。

関連項目
     ps(1), execve(2), racct(2), thr_exit(2), thr_kill(2), thr_kill2(2),
     thr_self(2), thr_set_name(2), _umtx_op(2), pthread_create(3)

規格
     thr_new() システムコールは、非標準であり、IEEE Std 1003.1-2001
     (``POSIX.1'') pthread(3) の機能を実装するために 1:1 スレッドライブラリ
     (libthr, -lthr) によって使用されます。

FreeBSD 11.4                     June 2, 2016                     FreeBSD 11.4

Table of Contents

FreeBSD マニュアル検索