linux-2.6.33/create_proc_entry()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#xe3975ab]
#backlinks
*説明 [#i2483f03]
-パス: 複数あり
--CONFIG_PROC_FS が有効な場合: [[linux-2.6.33/fs/proc/gen...
--CONFIG_PROC_FS が無効な場合: [[linux-2.6.33/include/lin...
-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 [#abeca3...
struct proc_dir_entry *create_proc_entry(const char *nam...
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 [#...
#ifdef CONFIG_PROC_FS
-/proc ファイルシステムが有効の場合
--[[linux-2.6.33/CONFIG_PROC_FS]]
(... 略 ...)
struct proc_dir_entry *proc_create_data(const char *name...
struct proc_dir_entry *parent,
const struct file_operations *proc_fops,
void *data);
-
#else
-/proc ファイルシステムが無効の場合
(... 略 ...)
static inline struct proc_dir_entry *create_proc_entry(c...
mode_t mode, struct proc_dir_entry *parent) { return NU...
-何もしない。
(... 略 ...)
#endif
*コメント [#q0fa05ea]
終了行:
*参照元 [#xe3975ab]
#backlinks
*説明 [#i2483f03]
-パス: 複数あり
--CONFIG_PROC_FS が有効な場合: [[linux-2.6.33/fs/proc/gen...
--CONFIG_PROC_FS が無効な場合: [[linux-2.6.33/include/lin...
-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 [#abeca3...
struct proc_dir_entry *create_proc_entry(const char *nam...
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 [#...
#ifdef CONFIG_PROC_FS
-/proc ファイルシステムが有効の場合
--[[linux-2.6.33/CONFIG_PROC_FS]]
(... 略 ...)
struct proc_dir_entry *proc_create_data(const char *name...
struct proc_dir_entry *parent,
const struct file_operations *proc_fops,
void *data);
-
#else
-/proc ファイルシステムが無効の場合
(... 略 ...)
static inline struct proc_dir_entry *create_proc_entry(c...
mode_t mode, struct proc_dir_entry *parent) { return NU...
-何もしない。
(... 略 ...)
#endif
*コメント [#q0fa05ea]
ページ名: