【发布时间】:2015-09-17 21:57:37
【问题描述】:
我向 Linux 内核添加了一个系统调用,如下所示:
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/list.h>
#include <linux/cred.h>
#include <asm/uaccess.h>
asmlinkage int sys_os_pid_to_uid(int pid, int* puid)
{
struct task_struct* task;
rcu_read_lock();
for_each_process(task)
{
if (task->pid == (pid_t) pid)
{
copy_to_user(puid, &(task->cred->uid.val), sizeof(task->cred->uid.val));
}
}
rcu_read_unlock();
return 0;
}
它获取一个进程 ID (pid) 并确定正在执行它的用户的用户 ID (puid)。
现在,我的问题开始了:我想在这个系统调用中添加另一个参数,即char *username,它将包含ID为puid的用户的用户名。我在 cred.h 标头中进行了搜索,但找不到与用户名有关的任何内容。
谁能帮我解决这个问题?
【问题讨论】:
标签: linux kernel system-calls