sam*_*man 5 kernel linux-kernel
我想向文件 linux-source/kernel/user.c 中的 user_struct 添加新字段(以存储此用户的就绪进程数)
struct user_struct {
atomic_t ready_processes; /* I add this field */
/* not important fields */
}
Run Code Online (Sandbox Code Playgroud)
在哪里正确初始化这个字段?
为了向 中添加新字段user_struct,您需要做 3 件事:
的定义user_struct在文件 sched.h(include/linux/sched.h)
你应该在那个中添加你的字段struct。
struct user_struct {
atomic_t ready_processes; /* I added this line! */
/*Other fields*/
};
Run Code Online (Sandbox Code Playgroud)在 user.c (kernel/user.c) 第 51 行,user_struct被实例化为root_user全局。在此处为您的字段赋值。
struct user_struct root_user = {
.ready_processes = ATOMIC_INIT(1), /* I added this line! */
.__count = ATOMIC_INIT(2),
.processes = ATOMIC_INIT(1),
.files = ATOMIC_INIT(0),
.sigpending = ATOMIC_INIT(0),
.locked_shm = 0,
.user_ns = &init_user_ns,
};
Run Code Online (Sandbox Code Playgroud)您已完成为 root 用户初始化您的字段,但您还应该为其他用户初始化它。
为此,在 user.c 中,转到alloc_uid分配和初始化新用户的函数。例如,您看到有一行atomic_set(&new->__count, 1);初始化__count. 在此旁边添加您的初始化代码。
atomic_set(&new->__count, 1);
atomic_set(&new->ready_processes, 1); /* I added this line! */
Run Code Online (Sandbox Code Playgroud)注意:它适用于 linux 2.6.32.62。我不确定其他版本,但我认为它不应该有很大不同。
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |