驱动的文件操作 llseek 接口,对应系统调用接口 lseek 函数.如果实现这个接口,驱动中的write,read接口函数也需要考虑文件指针。
系统调用接口原型:
off_t lseek(int fd, off_t offset, int whence);
参数:fd文件描述符号
offset:偏移量,可以正数,也可以负数
whence:移动方式:
SEEK_SET
把文件指针直接设置成 offset
SEEK_CUR
把文件指针设置成 当前位置+ offset 值
SEEK_END
把文件指针设置成 文件结束位置 + offset 值
返回值:
成功:相对文件头,当前文件指针位置
失败:-1。错误码如下:
ERRORS | 描述 |
EBADF | 打开文件错误返回这个错误 |
EINVAL | 当 whence 值不是 SEEK_SET, SEEK_CUR, SEEK_END;错误码其实由驱动程序的llseek接口返回的 |
EOVERFLOW | 当文件offset值不能转换成为 off_t ,错误码其实由驱动程序的llseek接口返回的 |