Raf*_*ffo 4 error-handling errno linux-kernel
我正在linux内核中编写一个新的系统调用.我想实现一个错误处理系统返回到谁使用sycall其描述错误的类型代码的用户.我想知道在内核中是如何完成的,因为我想遵循标准.我想让用户读取errno变量或类似的变量来理解发生的错误.谢谢.
PS我正在使用最新的linux版本.
Kar*_*tan 11
你的大部分任务都是由libc和低级内核系统调用处理程序(在程序集中编写的部分)自动完成的.处理错误代码的内核约定是返回负的错误常量,例如-ENOMEM.零或正数表示成功.这在整个内核中使用.
如果你已经定义了新的sycall入口点static asmlinkage long my_new_syscall (int param) {...},它只需要返回-ENOMEM(或类似).如果您使用libc调用系统调用syscall(nr, param),那么在错误时它将返回-1并且ENOMEM(在正数中)将返回errno.
include/asm-generic/{errno,errno-base}.h您可以使用(如ENOMEM)定义的许多错误代码.如果这些都不符合您的目的,您可以将自己的错误编号添加到这些文件中,但请注意,您还需要修改用户空间可见的内核头文件以显示相同的编号,这样会更加困难设置系统以使用您的修改.如果你不需要,不要这样做.
| 归档时间: |
|
| 查看次数: |
5000 次 |
| 最近记录: |