【发布时间】:2017-09-01 12:50:27
【问题描述】:
我试图了解 Linux 系统调用如何返回错误代码。我碰到了times() 系统调用。这个简单的系统调用将一些数据复制到用户空间,如果该操作不成功,则返回-EFAULT:
SYSCALL_DEFINE1(times, struct tms __user *, tbuf)
{
if (tbuf) {
struct tms tmp;
do_sys_times(&tmp);
if (copy_to_user(tbuf, &tmp, sizeof(struct tms)))
return -EFAULT;
}
force_successful_syscall_return();
return (long) jiffies_64_to_clock_t(get_jiffies_64());
}
我的问题是:
- 为什么是
-EFAULT?不应该是EFAULT没有减号吗? - 返回负错误码是否常见?
【问题讨论】:
标签: linux-kernel system-calls error-code