MAKE_DEV(9) FreeBSD カーネル開発者マニュアル MAKE_DEV(9)
名称
make_dev, make_dev_alias, destroy_dev, dev_depends − デバイスのための cdev および DEVFS 登録の管理 |
書式
#include <sys/param.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 つのデバイスは同時に親にも子にもなれ、そのため、完 全な階層構造を構築することが可能です。 |
関連項目
歴史
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 |