tail head cat sleep
QR code linking to this page

manページ  — MAKE_DEV

名称

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 ではじめて登場しました。

MAKE_DEV (9) March 28, 2005

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

… one of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs.
— Robert Firth