*参照元 [#xe3975ab] #backlinks *説明 [#i2483f03] -パス: 複数あり --CONFIG_PROC_FS が有効な場合: [[linux-2.6.33/fs/proc/generic.c]] --CONFIG_PROC_FS が無効な場合: [[linux-2.6.33/include/linux/proc_fs.h]] -FIXME: これは何? --説明 **引数 [#t304840b] -const char *name -- -mode_t mode -- --[[linux-2.6.33/mode_t]] -struct proc_dir_entry *parent -- --[[linux-2.6.33/proc_dir_entry]] **返り値 [#y15a1afe] -struct proc_dir_entry * -- --成功時は proc ファイルシステムエントリへのポインタが返ります。 失敗時は NULL が返ります。 **参考 [#b0bceb86] *実装 [#l55d8705] **CONFIG_PROC_FS が有効な場合: fs/proc/generic.c [#abeca3fe] struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent) { struct proc_dir_entry *ent; nlink_t nlink; - --[[linux-2.6.33/nlink_t]] if (S_ISDIR(mode)) { if ((mode & S_IALLUGO) == 0) mode |= S_IRUGO | S_IXUGO; nlink = 2; - --[[linux-2.6.33/S_ISDIR()]] - --[[linux-2.6.33/S_IALLUGO]] - --[[linux-2.6.33/S_IRUGO]] - --[[linux-2.6.33/S_IXUGO]] } else { if ((mode & S_IFMT) == 0) mode |= S_IFREG; if ((mode & S_IALLUGO) == 0) mode |= S_IRUGO; nlink = 1; - --[[linux-2.6.33/S_IFMT]] - --[[linux-2.6.33/S_IFREG]] } ent = __proc_create(&parent, name, mode, nlink); - --[[linux-2.6.33/__proc_create()]] if (ent) { if (proc_register(parent, ent) < 0) { kfree(ent); ent = NULL; } - --[[linux-2.6.33/proc_register()]] - --[[linux-2.6.33/kfree()]] } return ent; } **CONFIG_PROC_FS が無効な場合: include/linux/proc_fs.h [#na87cd74] #ifdef CONFIG_PROC_FS -/proc ファイルシステムが有効の場合 --[[linux-2.6.33/CONFIG_PROC_FS]] (... 略 ...) struct proc_dir_entry *proc_create_data(const char *name, mode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops, void *data); - #else -/proc ファイルシステムが無効の場合 (... 略 ...) static inline struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent) { return NULL; } -何もしない。 (... 略 ...) #endif *コメント [#q0fa05ea]