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.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)

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



検索コマンド: man apropos whatis
コマンド/キーワード:
日本語マニュアル RELEASE :
セクション:
Table of Contents
名称 | 書式 | 解説 | 戻り値 | エラー | 関連項目 | 歴史
MAKE_DEV(9)            FreeBSD カーネル開発者マニュアル            MAKE_DEV(9)

名称
     make_dev, make_dev_cred, make_dev_credf, make_dev_p, make_dev_s,
     make_dev_alias, make_dev_alias_p, destroy_dev, destroy_dev_sched,
     destroy_dev_sched_cb, destroy_dev_drain, dev_depends -- デバイスのための
     cdev と DEVFS 登録を管理する

書式
     #include <sys/param.h>
     #include <sys/conf.h>

     void
     make_dev_args_init(struct make_dev_args *args);

     int
     make_dev_s(struct make_dev_args *args, struct cdev **cdev,
         const char *fmt, ...);

     int
     make_dev_alias_p(int flags, struct cdev **cdev, struct cdev *pdev,
         const char *fmt, ...);

     void
     destroy_dev(struct cdev *dev);

     void
     destroy_dev_sched(struct cdev *dev);

     void
     destroy_dev_sched_cb(struct cdev *dev, void (*cb)(void *), void *arg);

     void
     destroy_dev_drain(struct cdevsw *csw);

     void
     dev_depends(struct cdev *pdev, struct cdev *cdev);

     古いインタフェース

     struct cdev *
     make_dev(struct cdevsw *cdevsw, int unit, uid_t uid, gid_t gid,
         int perms, const char *fmt, ...);

     struct cdev *
     make_dev_cred(struct cdevsw *cdevsw, int unit, struct ucred *cr,
         uid_t uid, gid_t gid, int perms, const char *fmt, ...);

     struct cdev *
     make_dev_credf(int flags, struct cdevsw *cdevsw, int unit,
         struct ucred *cr, uid_t uid, gid_t gid, int perms, const char *fmt,
         ...);

     int
     make_dev_p(int flags, struct cdev **cdev, struct cdevsw *devsw,
         struct ucred *cr, uid_t uid, gid_t gid, int mode, const char *fmt,
         ...);

     struct cdev *
     make_dev_alias(struct cdev *pdev, const char *fmt, ...);

解説
     make_dev_s() 関数は、cdev 引数に返される新しいデバイスのための cdev 構造
     体を作成します。また、それは新しいデバイスの存在を devfs(5) に通知して、
     対応するノードを作成します。これに加えて、devctl(4) 通知が送信されます。
     関数は、デバイス作成のためのパラメータを指定する、構造体 struct
     make_dev_args args を取ます:

           struct make_dev_args {
                   size_t           mda_size;
                   int              mda_flags;
                   struct cdevsw   *mda_devsw;
                   struct ucred    *mda_cr;
                   uid_t            mda_uid;
                   gid_t            mda_gid;
                   int              mda_mode;
                   int              mda_unit;
                   void            *mda_si_drv1;
                   void            *mda_si_drv2;
           };
     使用する前に、要求された値で満たされ、構造体は、将来のカーネルインタ
     フェース拡張がドライバのソースコードまたはバイナリインタフェースに影響し
     ないことを保証する、make_dev_args_init() 関数によって初期化されなければな
     りません。

     作成されたデバイスは、args.mda_gid としてグループの所有権で args.mda_uid
     によって所有されます。名前は、fmt と拡張と printf(9) がそれを印刷する次の
     引数です。名前は、/dev または、他の devfs(5) マウントポイント下のパスを決
     定して、サブディレクトリを指示するスラッシュ `/' 文字を含みます。
     args.mda_mode で指定されるファイルのパーミッションは、<sys/stat.h> に定義
     されています。

           #define S_IRWXU 0000700    /* 所有者のための RWX マスク
           #define S_IRUSR 0000400    /* 所有者のための R */
           #define S_IWUSR 0000200    /* 所有者のための W */
           #define S_IXUSR 0000100    /* 所有者のための X */

           #define S_IRWXG 0000070    /* グループのための RWX マスク */
           #define S_IRGRP 0000040    /* グループのための R */
           #define S_IWGRP 0000020    /* グループのための W */
           #define S_IXGRP 0000010    /* グループのための X */

           #define S_IRWXO 0000007    /* その他のための RWX マスク */
           #define S_IROTH 0000004    /* その他のための R */
           #define S_IWOTH 0000002    /* その他のための W */
           #define S_IXOTH 0000001    /* その他のための X */

           #define S_ISUID 0004000    /* 実行時のセットユーザ ID */
           #define S_ISGID 0002000    /* 実行時のセットグループ ID */
           #define S_ISVTX 0001000    /* スティッキビット */
           #ifndef _POSIX_SOURCE
           #define S_ISTXT 0001000
           #endif

     args.mda_cr 引数は、初期化している struct cdevsi_cred メンバに格納さ
     れる資格証明を指定します。

     args.mda_flags 引数は、make_dev_s() の動作を変更します。現在、次の値が受
     け付けられます:

           MAKEDEV_REF              作成されたデバイスを参照
           MAKEDEV_NOWAIT           sleep しません、呼び出しは、失敗します
           MAKEDEV_WAITOK           malloc を満たすために関数は、sleep するこ
                                    とができます
           MAKEDEV_ETERNAL          作成されたデバイスは、決して破壊されません
           MAKEDEV_CHECKNAME        デバイス名が不正であるか、または既に存在す
                                    るなら、エラーを返します

     MAKEDEV_NOWAIT, MAKEDEV_WAITOK と MAKEDEV_CHECKNAME 値だけが、
     make_dev_alias_p() 関数のために受け付けられます。

     MAKEDEV_WAITOK, MAKEDEV_NOWAIT のいずれも指定されなければ、MAKEDEV_WAITOK
     フラグが仮定されます。

     devfs_lookup(9) が cdev への参照を落す直後に破壊されるところで競合を避け
     るために、作成されたデバイスが、検索のために応答でデバイスを作成すると
     き、dev_clone(9) イベントハンドラは、MAKEDEV_REF フラグを指定するものとし
     ます。

     MAKEDEV_ETERNAL フラグによって、カーネルは、システムコールを cdevsw メ
     ソッド呼び出しに変換するとき、いくつかのロックを獲得できません。
     destroy_dev() が返された cdev で決して呼び出されないことを保証するのは、
     ドライバの作者の責任です。利便性のために、カーネルにコンパイルするか、ま
     たはローダブルモジュールとしてロード (アンロード) することができるコード
     に対して MAKEDEV_ETERNAL_KLD フラグを使用します。

     MAKEDEV_CHECKNAME フラグが指定されず、デバイス名が不正であるか、または既
     に存在しているなら、パニックが起こります。

     次の形式の make_dev_p() 使用は、

           struct cdev *dev;
           int res;
           res = make_dev_p(flags, &dev, cdevsw, cred, uid, gid, perms, name);
     次のコードと同等です。

           struct cdev *dev;
           struct make_dev_args args;
           int res;

           make_dev_args_init(&args);
           args.mda_flags = flags;
           args.mda_devsw = cdevsw;
           args.mda_cred = cred;
           args.mda_uid = uid;
           args.mda_gid = gid;
           args.mda_mode = perms;
           res = make_dev_s(&args, &dev, name);

     同様に、make_dev_credf() 関数呼び出しは、次と同等です。

                   (void) make_dev_s(&args, &dev, name);
     言い換えると、make_dev_credf() は、呼び出し側が返り値を得ることを許可せ
     ず、INVARIANTS オプションでコンパイルされたカーネルで、関数は、デバイスが
     成功して作成されたと断言します。

     make_dev_cred() 関数は、次の呼び出しと同等です。

           make_dev_credf(0, cdevsw, unit, cr, uid, gid, perms, fmt, ...);

     make_dev() 関数呼び出しは、次と同じです。

           make_dev_credf(0, cdevsw, unit, NULL, uid, gid, perms, fmt, ...);

     make_dev_alias_p() 関数は、make_dev() から返された cdev を取り、このデバ
     イスのために別の (エイリアスされる) 名前を作成します。make_dev() を呼び出
     す前に make_dev_alias_p() を呼び出すことは、エラーです。

     make_dev_alias() 関数は、make_dev_alias() と同様ですが、それは、結果のエ
     イリアシング *cdev を返し、エラーを返しません。

     make_dev_s() と make_dev_alias_p() によって返された cdev には、状態を格納
     するために利用可能な、2 つのフィールド si_drv1si_drv2 があります。両
     方のフィールドは、タイプ void * であり、make_dev_s() 引数の構造体の
     args.mda_si_drv1args.mda_si_drv2 メンバを満たすことによって cdev 割り
     付けで同時に初期化することができるか、または古いインタフェースを使用して
     いるなら、cdev が割り付けられた後に満たされます。後者の場合に、ドライバ
     は、初期化されていない si_drv1si_drv2 自体にアクセスしている競合を処
     理するべきです。これらは、unit 引数を、dev2unit() で取得できる、
     make_dev() に置き換えるようにを設計されています。

     destroy_dev() 関数は、make_dev() から返された cdev を取り、そのデバイスの
     ための登録を破壊します。破壊イベントに関する通知が、devctl(4) に送られま
     す。make_dev_alias() で作成されたデバイスで destroy_dev() を呼び出さない
     でください。

     dev_depends() 関数は、2 つのデバイスの間の親子関係を確立します。ネットの
     影響は、親デバイスの destroy_dev() が、存在しているなら、(複数の) 子供の
     デバイスも破壊する結果となります。デバイスは、同時に親と子供であるかもし
     れないので、完全な階層構造を構築することは可能です。

     destroy_dev_sched_cb() 関数は、安全なコンテキストで指定された cdev のため
     に destroy_dev() の実行をスケジュールします。destroy_dev() が終了した後
     に、供給された cb が NULL でないなら、コールバック cb が、引数 arg で呼び
     出されます。destroy_dev_sched() 関数は、次と同じです。

           destroy_dev_sched_cb(cdev, NULL, NULL);

     d_close() ドライバの方法は、直接 destroy_dev() を呼び出すことができませ
     ん。そうすることは、destroy_dev() が、ドライバの方法に任せるすべてのス
     レッドを待つとき、デッドロックを引き起こします。また、destroy_dev() は、
     スリープするので、スリープ不可能なロックは、呼び出しにわたって保持されま
     せん。destroy_dev_sched() 関数ファミリは、これらの問題を克服します。

     デバイスドライバは、cdevsw として供給された csw があるすべてのデバイスが
     破壊されるまで、待つために、destroy_dev_drain() 関数を呼び出します。ドラ
     イバは、destroy_dev_sched() がすべての例示されたデバイスを呼び出すことを
     知っていますが、destroy_dev() が実際にそれらのすべてが終了するまで、モ
     ジュールのアンロードを延期するのが必要があるとき、役に立ちます。

戻り値
     成功するなら、make_dev_s() と make_dev_p() は、0 を返し、そうでければ、そ
     れらは、エラーを返します。成功するなら、make_dev_credf() は、有効な cdev
     ポインタを返し、そうでければ、NULL を返します。

エラー
     make_dev_s(), make_dev_p() と make_dev_alias_p() 呼び出しは、次の場合に失
     敗して、デバイスは、登録されません:

     [ENOMEM]           MAKEDEV_NOWAIT フラグが指定され、メモリ割り付け要求を
                        満たすことができませんでした。

     [ENAMETOOLONG]     MAKEDEV_CHECKNAME フラグが指定され、提供されたデバイス
                        名が、SPECNAMELEN より長いです。

     [EINVAL]           MAKEDEV_CHECKNAME フラグが指定され、提供されたデバイス
                        名が空であり、"." または ".." パス構成要素を含むか、ま
                        たは `/' で終っています。

     [EINVAL]           MAKEDEV_CHECKNAME フラグが指定され、提供されたデバイス
                        名が不正な文字を含んでいます。

     [EEXIST]           MAKEDEV_CHECKNAME フラグが指定され、提供されたデバイス
                        名が既に存在しています。

関連項目
     devctl(4), devfs(5), dev_clone(9)

歴史
     make_dev() と destroy_dev() 関数は、FreeBSD 4.0 ではじめて登場しました。
     関数 make_dev_alias() は、FreeBSD 4.1 ではじめて登場しました。関数
     dev_depends() は、FreeBSD 5.0 ではじめて登場しました。関数
     make_dev_credf(), destroy_dev_sched(), destroy_dev_sched_cb() は、
     FreeBSD 7.0 ではじめて登場しました。関数 make_dev_p() は、FreeBSD 8.2 で
     はじめて登場しました。関数 make_dev_s() は、FreeBSD 11.0 ではじめて登場し
     ました。

FreeBSD 11.2                     March 2, 2016                    FreeBSD 11.2

Table of Contents

FreeBSD マニュアル検索