3
Linuxシステムコールがエラーコードを返す方法を理解しようとしていました。私はtimes()システムコールにぶつかった。この単純なシステムコールユーザ空間へコピーし、いくつかのデータとその操作が成功しなかった場合は戻り-EFAULT
:Linuxカーネルでエラーコードを返す
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
にする必要はありませんか? - 負のエラーコードを返すのは一般的ですか? man 2 syscallsから