这篇教程C++ vfs_readv函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中vfs_readv函数的典型用法代码示例。如果您正苦于以下问题:C++ vfs_readv函数的具体用法?C++ vfs_readv怎么用?C++ vfs_readv使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了vfs_readv函数的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: fd_do_readvstatic int fd_do_readv(struct se_task *task){ struct fd_request *req = FILE_REQ(task); struct se_device *se_dev = req->fd_task.task_se_cmd->se_dev; struct fd_dev *dev = se_dev->dev_ptr; struct file *fd = dev->fd_file; struct scatterlist *sg = task->task_sg; struct iovec *iov; mm_segment_t old_fs; loff_t pos = (task->task_lba * se_dev->se_sub_dev->se_dev_attrib.block_size); int ret = 0, i; iov = kzalloc(sizeof(struct iovec) * task->task_sg_nents, GFP_KERNEL); if (!iov) { pr_err("Unable to allocate fd_do_readv iov[]/n"); return -ENOMEM; } for (i = 0; i < task->task_sg_nents; i++) { iov[i].iov_len = sg[i].length; iov[i].iov_base = sg_virt(&sg[i]); } old_fs = get_fs(); set_fs(get_ds()); ret = vfs_readv(fd, &iov[0], task->task_sg_nents, &pos); set_fs(old_fs); kfree(iov); /* * Return zeros and GOOD status even if the READ did not return * the expected virt_size for struct file w/o a backing struct * block_device. */ if (S_ISBLK(fd->f_dentry->d_inode->i_mode)) { if (ret < 0 || ret != task->task_size) { pr_err("vfs_readv() returned %d," " expecting %d for S_ISBLK/n", ret, (int)task->task_size); return (ret < 0 ? ret : -EINVAL); } } else { if (ret < 0) { pr_err("vfs_readv() returned %d for non" " S_ISBLK/n", ret); return ret; } } return 1;}
开发者ID:SSKain,项目名称:linux-2.6-imx,代码行数:52,
示例2: sys_readvasmlinkage ssize_tsys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen){ struct file *file; ssize_t ret = -EBADF; int fput_needed; file = fget_light(fd, &fput_needed); if (file) { ret = vfs_readv(file, vec, vlen, &file->f_pos); fput_light(file, fput_needed); } return ret;}
开发者ID:OS2World,项目名称:DRV-LXAPI32,代码行数:15,
示例3: SYSCALL_DEFINE3SYSCALL_DEFINE3(readv, unsigned long, fd, const struct iovec __user *, vec, unsigned long, vlen){ struct fd f = fdget(fd); ssize_t ret = -EBADF; if (f.file) { loff_t pos = file_pos_read(f.file); ret = vfs_readv(f.file, vec, vlen, &pos); file_pos_write(f.file, pos); fdput(f); } if (ret > 0) add_rchar(current, ret); inc_syscr(current); return ret;}
开发者ID:dkati,项目名称:Hulk-Kernel-V2,代码行数:18,
示例4: do_readvstatic ssize_t do_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen, int flags){ struct fd f = fdget_pos(fd); ssize_t ret = -EBADF; if (f.file) { loff_t pos = file_pos_read(f.file); ret = vfs_readv(f.file, vec, vlen, &pos, flags); if (ret >= 0) file_pos_write(f.file, pos); fdput_pos(f); } if (ret > 0) add_rchar(current, ret); inc_syscr(current); return ret;}
开发者ID:020gzh,项目名称:linux,代码行数:19,
示例5: SYSCALL_DEFINE3SYSCALL_DEFINE3(readv, unsigned long, fd, const struct iovec __user *, vec, unsigned long, vlen){ struct file *file; ssize_t ret = -EBADF; int fput_needed; file = fget_light(fd, &fput_needed); if (file) { loff_t pos = file_pos_read(file); ret = vfs_readv(file, vec, vlen, &pos); file_pos_write(file, pos); fput_light(file, fput_needed); } if (ret > 0) add_rchar(current, ret); inc_syscr(current); return ret;}
开发者ID:kuailexs,项目名称:A820_kernel,代码行数:20,
示例6: do_preadvstatic ssize_t do_preadv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen, loff_t pos, int flags){ struct fd f; ssize_t ret = -EBADF; if (pos < 0) return -EINVAL; f = fdget(fd); if (f.file) { ret = -ESPIPE; if (f.file->f_mode & FMODE_PREAD) ret = vfs_readv(f.file, vec, vlen, &pos, flags); fdput(f); } if (ret > 0) add_rchar(current, ret); inc_syscr(current); return ret;}
开发者ID:020gzh,项目名称:linux,代码行数:22,
示例7: SYSCALL_DEFINE5SYSCALL_DEFINE5(preadv, unsigned long, fd, const struct iovec __user *, vec, unsigned long, vlen, unsigned long, pos_l, unsigned long, pos_h){ loff_t pos = pos_from_hilo(pos_h, pos_l); struct fd f; ssize_t ret = -EBADF; if (pos < 0) return -EINVAL; f = fdget(fd); if (f.file) { ret = -ESPIPE; if (f.file->f_mode & FMODE_PREAD) ret = vfs_readv(f.file, vec, vlen, &pos); fdput(f); } if (ret > 0) add_rchar(current, ret); inc_syscr(current); return ret;}
开发者ID:dkati,项目名称:Hulk-Kernel-V2,代码行数:23,
注:本文中的vfs_readv函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ vfs_rename函数代码示例 C++ vfs_readdir函数代码示例 |