*参照元 [#h1a40cec] #backlinks *説明 [#iaf497d7] -パス: 複数あり --CONFIG_PROC_FS 有効: [[linux-4.4.1/fs/proc/generic.c]] --CONFIG_PROC_FS 無効: [[linux-4.4.1/include/linux/proc_fs.h]] -FIXME: これは何? --説明 **引数 [#f11db88c] -const char *name -- -umode_t mode -- --[[linux-4.4.1/umode_t]] -struct proc_dir_entry *parent -- --[[linux-4.4.1/proc_dir_entry]] -const struct file_operations *proc_fops -- --[[linux-4.4.1/file_operations]] -void *data -- **返り値 [#sd67724a] -struct proc_dir_entry * -- --[[linux-4.4.1/proc_dir_entry]] **参考 [#d65e6cf6] *実装 [#e2879c82] **CONFIG_PROC_FS 有効: fs/proc/generic.c [#s5de1ddc] struct proc_dir_entry *proc_create_data(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops, void *data) { struct proc_dir_entry *pde; if ((mode & S_IFMT) == 0) mode |= S_IFREG; - --[[linux-4.4.1/proc_dir_entry]] if (!S_ISREG(mode)) { WARN_ON(1); /* use proc_mkdir() */ return NULL; } - --[[linux-4.4.1/S_ISREG()]] --[[linux-4.4.1/WARN_ON()]] BUG_ON(proc_fops == NULL); - --[[linux-4.4.1/BUG_ON()]] if ((mode & S_IALLUGO) == 0) mode |= S_IRUGO; pde = __proc_create(&parent, name, mode, 1); if (!pde) goto out; - --[[linux-4.4.1/__proc_create()]] pde->proc_fops = proc_fops; pde->data = data; pde->proc_iops = &proc_file_inode_operations; if (proc_register(parent, pde) < 0) goto out_free; return pde; - --[[linux-4.4.1/proc_file_inode_operations(global)]] --[[linux-4.4.1/proc_register()]] out_free: kfree(pde); - --[[linux-4.4.1/kfree()]] out: return NULL; } EXPORT_SYMBOL(proc_create_data); - --[[linux-4.4.1/EXPORT_SYMBOL()]] **CONFIG_PROC_FS 無効: include/linux/proc_fs.h [#c204625e] #define proc_create_data(name, mode, parent, proc_fops, data) ({NULL;}) -常に失敗する。 *コメント [#u632df9b]