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
名称 | 書式 | 解説 | 戻り値 | 使用例 | エラー | 関連項目 | 歴史 | 作者
UIO(9)                 FreeBSD カーネル開発者マニュアル                 UIO(9)

名称
     uio, uiomove, uiomove_frombuf, uiomove_nofault -- デバイスドライバ I/O
     ルーチン

書式
     #include <sys/types.h>
     #include <sys/uio.h>

     struct uio {
             struct  iovec *uio_iov;         /* 分散/集中 (scatter/gather) リスト */
             int     uio_iovcnt;             /* 分散/集中リストの長さ */
             off_t   uio_offset;             /* タケットオブジェクトの
                                                オフセット */
             ssize_t uio_resid;              /* コピーする残りのバイト */
             enum    uio_seg uio_segflg;     /* アドレス空間 */
             enum    uio_rw uio_rw;          /* 操作 */
             struct  thread *uio_td;         /* 所有者 */
     };

     int
     uiomove(void *buf, int howmuch, struct uio *uiop);

     int
     uiomove_frombuf(void *buf, int howmuch, struct uio *uiop);

     int
     uiomove_nofault(void *buf, int howmuch, struct uio *uiop);

解説
     関数 uiomove(), uiomove_frombuf() と uiomove_nofault() は、場合によりユー
     ザ/カーネル空間の境界に渡るかもしれないバッファと I/O ベクトルの間のデー
     タを転送するために使用されます。

     キャラクタデバイスドライバに渡された、あらゆる read(2), write(2),
     readv(2) または writev(2) の結果として、適切なドライバ d_read または
     d_write エントリは、渡されている struct uio へのポインタで呼び出されま
     す。転送要求は、この構造体でエンコードされます。ドライバ、それ自体は、こ
     の構造体のデータを取得するために uiomove() または uiomove_nofault() を使
     用するべきです。

     uio 構造体のフィールドは、次の通りです:

     uio_iov     処理される I/O ベクトルの配列。分散/集中 (scatter/gather) I/O
                 の場合に、これは、2 つ以上のベクトルとなります。

     uio_iovcnt  存在する I/O ベクトルの数。

     uio_offset  デバイスへのオフセット。

     uio_resid   転送の後に更新された、処理するバイトの残りの数。

     uio_segflg  次のフラグの 1 つです:

                 UIO_USERSPACE  プロセスのアドレス空間への I/O ベクトルポイン
                                ト。

                 UIO_SYSSPACE   カーネルアドレス空間への I/O ベクトルポイン
                                ト。

                 UIO_NOCOPY     既にオブジェクトがあれば、コピーしません。

     uio_rw      UIO_READ または UIO_WRITE のいずれかである、要求された転送の
                 方向。

     uio_td      関連するスレッドのための struct thread へのポインタ。転送がプ
                 ロセスのアドレス空間から/へ行われることになっていることを、
                 uio_segflg が示すなら、使用されます。

     関数 uiomove_nofault() は、バッファと I/O ベクトルがページフォルトせず
     に、アクセス可能であることを必要とします。発信元と宛先アドレスは、それぞ
     れ読み込みと書き込みアクセスのために物理的にマップされなければなりませ
     ん、そして、発信元も宛先アドレスもページ可能でないかもしれません。した
     がって、獲得された仮想記憶システムがロックまたはスリープが禁止されている
     コンテキストから関数 uiomove_nofault() を呼び出すことができます。

     uiomove_frombuf() 関数は、メモリの既存のバッファ内に完全に含まれている
     データを供給するドライバのための uiomove() のまわりの便利なラッパです。そ
     れは、要求がバッファと部分的に重複しているとき、短い転送を処理して、既存
     のバッファのサイズに対して uio_offsetuio_resid 値を有効にします。
     uio_offset バッファサイズより大きいか、または等しいとき、結果は、EOF を効
     果的にシグナルを発生して、転送されるバイトなしで成功します。

戻り値
     成功すれば、uiomove(), uiomove_frombuf() と uiomove_nofault() は、0 を返
     します。エラーのときに、それらは、適切なエラーコードを返します。

使用例
     目的は、ドライバがそのデータのためのプライベートなバッファを保守し、この
     バッファの最大サイズのチャンクで要求を処理することです。下記のバッファの
     取り扱いは、非常に単純化され、動作せず (バッファポインタが、部分的な読み
     取りの場合に、進められません)、それは、uio の取り扱いを明示するためにだけ
     に、ここで示すことに注意してください。

     /* MIN() は、次で見つけることができます: */
     #include <sys/param.h>

     #define BUFSIZE 512
     static char buffer[BUFSIZE];

     static int data_available;      /* 読み込みすることができるデータ量 */

     static int
     fooread(struct cdev *dev, struct uio *uio, int flag)
     {
             int rv, amnt;

             rv = 0;
             while (uio->uio_resid > 0) {
                     if (data_available > 0) {
                             amnt = MIN(uio->uio_resid, data_available);
                             rv = uiomove(buffer, amnt, uio);
                             if (rv != 0)
                                     break;
                             data_available -= amnt;
                     } else
                             tsleep(...);    /* より良い時間を待つ */
             }
             if (rv != 0) {
                     /* ここで, エラーのクリーンアップを行なう */
             }
             return (rv);
     }

エラー
     uiomove() と uiomove_nofault() は、失敗して、次の場合に、次のエラーコード
     を返します:

     [EFAULT]           呼び出された copyin(9) または copyout(9) が EFAULT を
                        返した。

     さらに、uiomove_nofault() は、次の場合に失敗して、次のエラーコードを返し
     ます:

     [EFAULT]           ページフォルトが起こりました。

関連項目
     read(2), readv(2), write(2), writev(2), copyin(9), copyout(9), sleep(9)

歴史
     uio のメカニズムは、UNIX のある初期のバージョンで登場しました。

作者
     このマニュアルページは、J";rg Wunsch によって書かれました。

FreeBSD 11.4                    March 11, 2017                    FreeBSD 11.4

Table of Contents

FreeBSD マニュアル検索