哪个函数负责/proc创建的主要逻辑?
我必须实现这个问题中提到的行为。 Is /proc directory generated dynamically per request?
我想有一个函数可以循环任务列表并创建相应的条目。我正在寻找类似的东西。
我寻找了使用 create_proc_entry() 函数的函数,但找不到突出的东西。
最佳答案
I suppose there is a function that loops through the task list and creates the corresponding entries. I am looking for something like that.
proc_pid_readdir()
函数位于 fs/proc/base.c
正是这样做的。
for 循环创建了所有 /proc/PID
条目。 iter.task
当前是task_struct
指针
int proc_pid_readdir(struct file *file, struct dir_context *ctx)
{
/*
.
.
.
*/
for (iter = next_tgid(ns, iter);
iter.task;
iter.tgid += 1, iter = next_tgid(ns, iter)) {
char name[PROC_NUMBUF];
int len;
if (!has_pid_permissions(ns, iter.task, 2))
continue;
len = snprintf(name, sizeof(name), "%d", iter.tgid);
ctx->pos = iter.tgid + TGID_OFFSET;
if (!proc_fill_cache(file, ctx, name, len,
proc_pid_instantiate, iter.task, NULL)) {
put_task_struct(iter.task);
return 0;
}
}
ctx->pos = PID_MAX_LIMIT + TGID_OFFSET;
return 0;
}
关于linux - 访问/proc时会触发哪个内核函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33317088/