【问题标题】:Linux system calls return valueLinux系统调用返回值
【发布时间】:2012-02-11 06:18:52
【问题描述】:

在一次家庭作业中,我们被要求向 Linux 内核(Red Hat 2.4.18)添加一个系统调用。根据赋值,新系统调用的返回值应该是无效的。系统调用本身非常简单(只需一次赋值),并且没有出错的机会。 根据我阅读和学习的内容,系统调用通常返回负值表示失败或 0 表示成功。我的问题是,这只是一种常见做法还是必须的?系统调用可以返回 void 吗?

【问题讨论】:

  • 不从有可能失败的函数返回任何东西通常被认为是不好的做法......

标签: c linux linux-kernel


【解决方案1】:

在 Linux 中,所有系统调用都返回 long,如果它们完全返回的话。假设您使用以下方式声明系统调用:

SYSCALL_DEFINE0(mycall)
{
    /* ... */
}

这会导致:

asmlinkage long sys_mycall(void)

如果你没有任何有用的返回并且调用不会失败,只需每次返回 0 表示成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 2010-11-06
    • 2012-03-10
    • 1970-01-01
    • 2020-06-07
    相关资源
    最近更新 更多