首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux中sys_open等内核函数的异常码怎么获得

2012-09-25 
linux中sys_open等内核函数的错误码如何获得?syscalls.h中定义的比如sys_open等内核函数失败后返回值是-1

linux中sys_open等内核函数的错误码如何获得?
syscalls.h中定义的比如sys_open等内核函数失败后返回值是-1
但是错误码怎样获取呢?

本来以为可以像上层应用一样包含errno.h直接取errno的值就行,结果驱动的errno.h根本没有这个变量
用什么办法取得错误码呢?

初学驱动开发,多多关照。

[解决办法]
SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode) // 这就是sys_open()
{
ret = do_sys_open(AT_FDCWD, filename, flags, mode);
return ret;
}
long do_sys_open(int dfd, const char __user *filename, int flags, int mode)
{
int fd = PTR_ERR(tmp);
if (!IS_ERR(tmp)) {
}
return fd;
}
#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)

由以上可知,错误值是直接返回的。

热点排行