+ -
当前位置:首页 → 问答吧 → linux中sys_open等内核函数的错误码如何获得?

linux中sys_open等内核函数的错误码如何获得?

时间:2011-08-13

来源:互联网

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

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

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

作者: yichigo   发布时间: 2011-08-13

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)

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

作者: gaosifuti   发布时间: 2011-08-13

热门下载

更多