スポンサーリンク

MAKE_DEV(9) FreeBSD カーネル開発者マニュアル MAKE_DEV(9)

名称

make_dev, make_dev_alias, destroy_dev, dev_depends − デバイスのための cdev および DEVFS 登録の管理

書式

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

struct cdev

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

struct cdev

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

void

destroy_dev(struct cdev dev);

void

dev_depends(struct cdev pdev, struct cdev cdev);

解説

make_dev() 関数は新しいデバイスのための cdev 構造体を作成します。 DEVFS が利用可能の場合には、新しいデバイスの存在も通知されます。そのデバイスは uid によって所有され、 gid のグループに所有され、 name で指定される名前を 持ちます。 perms に指定するファイルのパーミッションは <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

make_dev_alias() 関数は make_dev() から返された cdev をとり、このデバイス のための別の名前 (別名) を作成します。 make_dev() の呼出しの前の make_dev_alias() の呼出しは、誤りです。

destroy_dev() 関数は make_dev() から返された cdev をとり、そのデバイスの 登録を削除します。 make_dev_alias() で作成されたデバイスで destroy_dev() を呼出さないでください。

dev_depends() 関数は 2 つのデバイス間の親子関係を確立します。このネット効 果は、親デバイスの destroy_dev() は、もしあれば、結果としてその子デバイス の破壊に終わります。 1 つのデバイスは同時に親にも子にもなれ、そのため、完 全な階層構造を構築することが可能です。

関連項目

devfs(5)

歴史

make_dev() および destroy_dev() 関数は FreeBSD 4.0 ではじめて登場しまし た。関数 make_dev_alias() は FreeBSD 4.1 ではじめて登場しました。関数 dev_depends() は FreeBSD 5.0 ではじめて登場しました。

FreeBSD 10.0 March 28, 2005 FreeBSD 10.0

スポンサーリンク