how to set errno in linux kernel
最编程
2024-07-24 12:13:06
...
在Linux内核中,可以通过使用<errno.h>中定义的errno宏来设置错误码。errno是一个全局的整型变量,它被定义在<errno.h>中,其值是由系统调用或库函数的调用在出错时设置的。errno的默认值为0,表示没有出错。当发生错误时,系统调用或库函数会把errno的值设置为相应的错误码。例如,如果调用read()系统调用时出错,它会将errno设置为适当的值,表示错误的类型。以下是errno的一些常用值及其含义:
errno值 含义
EACCES 权限不足
EAGAIN 资源不可用,重试
EBADF 文件描述符无效
EBUSY 资源忙碌
EEXIST 文件已存在
EFAULT 缓冲区指针无效
EINVAL 参数无效
EIO I/O 错误
...
在内核代码中,可以使用SET_ERRNO宏来设置errno的值。例如:
SET_ERRNO(-EINVAL);
将errno设置为-EINVAL,表示无效的参数错误。需要注意的是,SET_ERRNO宏只能在内核空间中使用。在应用程序中无法直接使用该宏,可以通过将errno的值直接赋值为错误码来实现类似的效果。